为什么NSUserDefaults返回' nil'?

时间:2014-07-11 10:30:17

标签: ios nsuserdefaults null

有人可以解释一下为什么NSUserDefaults会为一个不是的对象返回“nil”吗? 我有一个游戏设置的视图,有一个文本区域,用户可以在其中写下他的名字。我在NSUserDefaults中保存此名称,并将其作为占位符用于其他用户进入此视图。 我设置了这样的对象:

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults]; 
NSString *fieldName = _nameField.text;
[defaults setObject:fieldName forKey:@"playerName"];
[[NSUserDefaults standardUserDefaults] synchronize];

占位符:

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
_nameField.placeholder = [defaults objectForKey:@"playerName"];

这完美无缺! 但是,当用户结束游戏时我想将他的分数保存在数据库中,如果这个分数在前十名之内;当然,我用他在设置视图中写下的名字保存得分。 我发现(放一些断点)在用户创建记录分数后运行的代码之后:

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
NSString *name = [defaults objectForKey:@"playerName"];

变量name"nil"。 我真的不知道为什么会发生这种情况,因为设置视图中的相同代码会返回名称而不是“nil”。

1 个答案:

答案 0 :(得分:0)

尝试使用

[defaults synchronize];

istead

[[NSUserDefaults standardUserDefaults] synchronize];

很抱歉重复 - @Gio Bact问我这件事。