0
我將自定義對象保存在NSUserDefults中,該對象具有多個屬性, 我初始化了AppDelegate中的自定義對象的值, 我的問題是當我嘗試檢索自定義對象屬性「userToken 「在視圖控制器didLoad方法它的工作原理和數據是正確的,但是當我在視圖控制器中的另一種方法檢索它我得到NULL請注意,其他屬性」uId「返回正確的值,我以同樣的方式檢索對象NSUserDefults返回null
我在這裏做錯了什麼?幫助是非常感謝
這裏就是我如何保存和檢索對象
+(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"];
}
日Thnx但方法SaveUser的你+方法總是得到空值:和retrieveUser是一個實用工具類的一部分,因此+等,這些方法都沒有的一部分用戶類! – ahmad
你使用initWithCoder和encodeWithCoder的方法,如果你試圖把它們放在工具類中,你總是得到null,因爲你不能訪問靜態類的屬性..所以如果你只使用這兩個函數-SaveUser retrieveUser - 從實用程序類,甚至應用程序委託它將工作,因爲他們爲我的任何內部或外部viewdidload調用工作.. –
thnx與我在這裏baring,但這正是我在做的initWithCoder結束encodeWithCoder不在實用程序他們在User類中的類,是什麼讓我瘋狂,有時它有效,有時它只是返回null! – ahmad