2015-04-07 101 views
0

我在做一个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,但没有任何工作。 谢谢!

+1

打印完整NSUserDefaults您可以打印所有NSUserdefaults的内容并检查。也许这里也把它放在这里的问题..这是如何做到这一点http://stackoverflow.com/questions/1676938/easy-way-to-see-saved-nsuserdefaults#1848980 –

+0

谢谢,通过打印我找到的内容什么错了,我可以修复它。问题是(int)位置接收到错误的数字(我不知道为什么,我不知道为什么它在模拟器上工作正常),因此它用另一个键保存了用户。我找到了解决这个问题的方法。谢谢 –

+0

刚刚添加相同的答案。也许你可以接受答案。谢谢 –

回答

0

我想可能会有一些问题存在它。

检查确切的保存。 您可以使用this

0

您是否尝试过setObject而不是setValue?

[savedData setObject:myEncodedObject forKey:[NSString stringWithFormat:@"user%i",position]]; 
相关问题