我有两个类:超类,用户及其子类,UserSession。用户是非常简单的,只是对于一些instanceVariables容器:对于高德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;
}
加上相关getter和setter方法。
UserSession是一个单例类的子类用户:
//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;
}
继承人的问题:当我拨打电话一样
[[UserSession sharedSession]
updateUserForUserSessionWithParams:@{@"userId":@1],
@"userName":@"Steve Smith",
@"userUsername":responseObject[@"ssmith"],
@"userEmail":responseObject[@"[email protected]"],
@"userBio":responseObject[@"I'm steve smith"]}];
,然后在别处:
NSString* stringName = [[UserSession sharedSession] getUserName];
NSString* stringUsername = [[UserSession sharedSession] getUserUsername];
NSString* stringBio = [[UserSession sharedSession] getUserBio];
这些干将回报零!
对不起所有的代码,但我认为我在做一些愚蠢的错误。任何帮助将是惊人的。
在此先感谢!
我想我们需要看一个setter和getter的例子,但有人不得不想知道为什么当你可以简单地使用Objective-C属性时自己写这些东西? '@property NSNumber * userID;'会做到这一点,并为您节省大量代码。另外,我们需要看到' - [UserSession init]'方法。 – Caleb 2014-09-02 17:31:40
ObjectiveC还是新的,所以我只是为了自己的理智而自己写它们。我不认为这真的很重要。但我没有 - [UserSession init]。我会在那里放什么? – 2014-09-02 17:42:46