NSUserDefaults 在模拟器上保存/加载,但不在设备上
NSUserDefaults saves / loads on simulator but not on device
我正在玩 iphone 游戏并使用 NSUserDefaults 保存数据。以下是我如何保存用户:
-(void) saveUser:(User*)user forPosition:(int) position{
NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:user];
NSUserDefaults*savedData=[NSUserDefaults standardUserDefaults];
[savedData setValue:myEncodedObject forKey:[NSString stringWithFormat:@"user%i",position]];
[savedData synchronize];
self.currentUser=user;}
这是我加载它的方式:
-(BOOL) loadUser:(int) position{
if([savedData objectForKey:[NSString stringWithFormat:@"user%i",position]]){
NSData *encodedObject = [savedData objectForKey:[NSString stringWithFormat:@"user%i",position]];
User *user = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];
self.currentUser=user;
return YES;
}
else return NO;}
如您所见,我在 NSUserDefaults 上保存了自定义 class。为此,我使用了 How to store custom objects in NSUserDefaults 的指导(以防有人感兴趣)。
当我在模拟器中使用它时,它工作得很好。问题是,如果我 运行 在我的 iphone 上(iphone 6 在 ios 8.1 上)它不会加载任何东西。
有什么想法吗?我已经访问过这个问题 NSUserdefaults works on Simulator but not on Device 但没有任何效果。
谢谢!
你试过用 setObject 代替 setValue 吗?
[savedData setObject:myEncodedObject forKey:[NSString stringWithFormat:@"user%i",position]];
我想保存它可能有问题。
检查到底保存了什么。
您可以使用 this
打印完整的 NSUserDefaults
我正在玩 iphone 游戏并使用 NSUserDefaults 保存数据。以下是我如何保存用户:
-(void) saveUser:(User*)user forPosition:(int) position{
NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:user];
NSUserDefaults*savedData=[NSUserDefaults standardUserDefaults];
[savedData setValue:myEncodedObject forKey:[NSString stringWithFormat:@"user%i",position]];
[savedData synchronize];
self.currentUser=user;}
这是我加载它的方式:
-(BOOL) loadUser:(int) position{
if([savedData objectForKey:[NSString stringWithFormat:@"user%i",position]]){
NSData *encodedObject = [savedData objectForKey:[NSString stringWithFormat:@"user%i",position]];
User *user = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];
self.currentUser=user;
return YES;
}
else return NO;}
如您所见,我在 NSUserDefaults 上保存了自定义 class。为此,我使用了 How to store custom objects in NSUserDefaults 的指导(以防有人感兴趣)。
当我在模拟器中使用它时,它工作得很好。问题是,如果我 运行 在我的 iphone 上(iphone 6 在 ios 8.1 上)它不会加载任何东西。
有什么想法吗?我已经访问过这个问题 NSUserdefaults works on Simulator but not on Device 但没有任何效果。 谢谢!
你试过用 setObject 代替 setValue 吗?
[savedData setObject:myEncodedObject forKey:[NSString stringWithFormat:@"user%i",position]];
我想保存它可能有问题。
检查到底保存了什么。 您可以使用 this
打印完整的NSUserDefaults