Ios 为什么NSUserDefaults返回“nil”?

Ios 为什么NSUserDefaults返回“nil”?,ios,nsuserdefaults,null,Ios,Nsuserdefaults,Null,有人能解释为什么NSUserDefaults为一个非零的对象返回nil吗? 我有一个带有一些游戏设置的视图,有一个文本字段,用户可以在其中写下自己的名字。我将此名称保存在NSUserDefaults中,并将其作为占位符,供其他用户输入此视图时使用。 我将对象设置为: NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults]; NSString *fieldName = _nameField.text; [defaults se

有人能解释为什么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"];
可变名称为零。 我真的不知道为什么会发生这种情况,因为设置视图中的相同代码返回的是名称而不是零。

尝试使用

[defaults synchronize];
伊斯泰德

[[NSUserDefaults standardUserDefaults] synchronize];

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

你的代码看起来没问题,所以一定是有其他东西破坏了这一点。请尝试检查你的[[NSUserDefaults standardUserDefaults]synchronize];方法返回YES。代码看起来正常。请确保您正在调试模式下运行,如果您将在发行版中运行,则名称将显示为零(即使不是)。我现在明白了-谢谢!让我们删除我们的评论。