我在 NSUserDefults 中保存了一个自定义对象,该对象具有多个属性,我在 AppDelegate 中初始化了自定义对象的值,我的问题是,当我尝试在 viewcontroller didLoad 方法中检索自定义对象属性“userToken”时它可以工作并且数据是正确的,但是当我在视图控制器中的另一个方法中检索它时,我得到 NULL 请注意,另一个属性“uId”返回正确的值,并且我正在以相同的方式检索对象
我在这里做错了什么?非常感谢您的帮助
这是我保存和检索对象的方式
+(void)SaveUser:(User *)user
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSData *userData = [NSKeyedArchiver archivedDataWithRootObject:user];
[userDefaults setObject:userData forKey:@"User"];
[userDefaults synchronize];
}
+(User*)retrieveUser
{
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
NSData *userData = [ud objectForKey:@"User"];
User *user = [NSKeyedUnarchiver unarchiveObjectWithData:userData];
return user;
}
这是用户对象的实现
- (id)initWithCoder:(NSCoder *)decoder
{
self = [super init];
if (self)
{
//uId and userToken are of type NSString
self.uId = [decoder decodeObjectForKey:@"UID"];
self.userToken = [decoder decodeObjectForKey:@"DeviceToken"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:self.uId forKey:@"UID"];
[encoder encodeObject:self.userToken forKey:@"DeviceToken"];
}