有人可以解释一下为什么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”。
答案 0 :(得分:0)
尝试使用
[defaults synchronize];
istead
[[NSUserDefaults standardUserDefaults] synchronize];
很抱歉重复 - @Gio Bact问我这件事。