두 클래스가 있습니다. 하나는 수퍼 클래스, User와 그 서브 클래스, UserSession입니다. 인스턴스 변수에 대한Objective-C 설정/싱글 톤 클래스의 iVars 액세스 '슈퍼 클래스
//User.h
@interface User : NSObject
- (id)initWithJSON:(NSDictionary *)JSONDictionary;
-(NSNumber *)getUserID;
-(NSString *)getUserName;
-(NSString *)getUserUsername;
-(NSString *)getUserEmail;
-(NSString *)getUserBio;
-(void)setUserID:(NSNumber *)userID;
-(void)setUserName:(NSString *)userName;
-(void)setUserUsername:(NSString *)userUsername;
-(void)setUserEmail:(NSString *)userEmail;
-(void)setUserBio:(NSString *)userBio;
@end
및
//User.m
@interface User()
@end
@implementation User
NSNumber *_userID;
NSString *_userName;
NSString *_userUsername;
NSString *_userEmail;
NSString *_userBio;
- (id)initWithJSON:(NSDictionary *)JSONDictionary
{
self = [super init];
if (!self)
return nil;
_userID = JSONDictionary[@"userID"];
_userName = JSONDictionary[@"userName"];
_userUsername = JSONDictionary[@"userUsername"];
_userEmail = JSONDictionary[@"userEmail"];
_userBio = JSONDictionary[@"userBio"];
return self;
}
플러스 관련 세터와 게터 : 사용자는 단지 일부 instanceVariables에 대한 용기, 매우 간단합니다.
//UserSession.m
@interface UserSession()
@end
@implementation UserSession
static UserSession *_session = nil;
-(void)updateUserForUserSessionWithParams:(NSDictionary *)params
{
[self setUserID:params[@"userId"]];
[self setUserName:params[@"userName"]];
[self setUserUsername:params[@"userUsername"]];
[self setUserEmail:params[@"userEmail"]];
[self setUserBio:params[@"userBio"]];
}
+ (instancetype)sharedSession
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Create a session
_session = [[UserSession alloc] init];
});
return _session;
}
을 Heres 문제 :
사용자 세션은 사용자를 하위 클래스 싱글 톤 클래스입니다
NSString* stringName = [[UserSession sharedSession] getUserName];
NSString* stringUsername = [[UserSession sharedSession] getUserUsername];
NSString* stringBio = [[UserSession sharedSession] getUserBio];
이 게터 반환 : 나는 다른 곳에서 다음
[[UserSession sharedSession]
updateUserForUserSessionWithParams:@{@"userId":@1],
@"userName":@"Steve Smith",
@"userUsername":responseObject[@"ssmith"],
@"userEmail":responseObject[@"[email protected]"],
@"userBio":responseObject[@"I'm steve smith"]}];
와 같은 통화를 할 때 무!
모든 코드를 유감스럽게 생각합니다.하지만 저는 뭔가 바보 같은 짓을하고 있다고 생각합니다. 어떤 도움이라도 훌륭 할 것입니다.
미리 감사드립니다.
우리는 setter와 getter의 예제를 볼 필요가있을 것입니다.하지만 Objective-C 속성을 사용할 수있을 때 왜이 글을 쓰고 있는지 궁금합니다. @property NSNumber * userID;는 트릭을 수행하고 많은 코드를 저장합니다. 또한, 우리는'- [UserSession init]'메소드를보아야 할 것이다. – Caleb
아직도 ObjectiveC에 새로운 C 그래서 나는 그들 자신을 내 자신의 온건함을 위해서 쓰고있다. 나는 그것이 정말로 중요하다고 생각하지 않는다. 나는 [UserSession init]을 가지고 있지 않습니다. 내가 뭘 넣을 까? –