NSUserDefaults在模拟器上保存/加载,但不在设备上保存/加载

时间:2015-04-07 03:58:31

标签: ios objective-c save load nsuserdefaults

我正在使用NSUserDefaults进行iphone游戏并保存数据。以下是我保存用户的方式:

-(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 6在ios 8.1上)运行它,它不会加载任何东西。

有什么想法可能是什么?我已经访问了这个问题NSUserdefaults works on Simulator but not on Device,但没有任何效果。 谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

打印完整的NSUserDefaults