我在做一个iphone游戏并使用NSUserDefaults保存数据。这是我如何保存用户: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上的iPhone 6),它不会加载任何东西。
任何想法它可能是什么?我已经访问过这个问题NSUserdefaults works on Simulator but not on Device,但没有任何工作。 谢谢!
打印完整
NSUserDefaults
您可以打印所有NSUserdefaults的内容并检查。也许这里也把它放在这里的问题..这是如何做到这一点http://stackoverflow.com/questions/1676938/easy-way-to-see-saved-nsuserdefaults#1848980 –谢谢,通过打印我找到的内容什么错了,我可以修复它。问题是(int)位置接收到错误的数字(我不知道为什么,我不知道为什么它在模拟器上工作正常),因此它用另一个键保存了用户。我找到了解决这个问题的方法。谢谢 –
刚刚添加相同的答案。也许你可以接受答案。谢谢 –