【发布时间】:2015-06-11 13:43:06
【问题描述】:
我正在做一个 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 上保存了一个自定义类。为此,我使用了来自 How to store custom objects in NSUserDefaults 的指导(以防有人感兴趣)。
当我在模拟器中使用它时,它可以完美运行。问题是,如果我在我的 iphone(ios 8.1 上的 iphone 6)上运行它,它不会加载任何东西。
有什么想法吗?我已经访问过这个问题NSUserdefaults works on Simulator but not on Device,但没有任何效果。 谢谢!
【问题讨论】:
-
您可以打印 NSUserdefaults 的所有内容并检查。也许也可以在这里提出问题..这是如何做到的stackoverflow.com/questions/1676938/…
-
谢谢,通过打印内容我发现了问题所在,我可以修复它。问题是 (int) 位置收到了错误的数字(我不知道为什么,也不知道为什么在模拟器上它可以正常工作),因此它用另一个键保存了用户。我找到了解决这个问题的方法。谢谢
-
刚刚添加了与答案相同的内容。也许你可以接受答案。谢谢
标签: ios objective-c save load nsuserdefaults