Iphone NSUserDefaults即使在使用同步时也不会持久

Iphone NSUserDefaults即使在使用同步时也不会持久,iphone,xcode,nsuserdefaults,synchronize,Iphone,Xcode,Nsuserdefaults,Synchronize,我的NSUserDefaults在应用程序运行或最小化时工作正常。但是如果我关闭应用程序并重新启动它,则返回的对象是null。代码: colorDefault = [NSUserDefaults standardUserDefaults]; [colorDefault setObject:myColor2 forKey:@"fieldKey"]; NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:myCo

我的
NSUserDefaults
在应用程序运行或最小化时工作正常。但是如果我关闭应用程序并重新启动它,则返回的对象是
null
。代码:

colorDefault = [NSUserDefaults standardUserDefaults];
[colorDefault setObject:myColor2 forKey:@"fieldKey"];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:myColor2, @"fieldKey", nil];

[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
//[[NSUserDefaults standardUserDefaults] synchronize];

[colorDefault synchronize];
我在我的
ApplicationIdentinterBackground
中调用
[[NSUserDefaults standardUserDefaults]synchronize]
,并在
应用程序中终止,但没有成功。我记录了这两种方法,当我关闭应用程序时,我注意到只调用了
DidEnterBackground


谢谢你的帮助

Mmmm。。。我认为你的代码应该更简单

这就是我编写NSUserDefault并检索它所做的:

// write
[[NSUserDefaults standardUserDefaults] setObject:@"aString" forKey:@"aKey"];

// read
[[NSUserDefaults standardUserDefaults] objectForKey:@"aKey"];
setObject并不是唯一的选项:setBool、setFloat、setInteger和另一边的BoolWorkey、floatForKey、IntegerWorkey也不错

不要忘记设置
设置。在项目中捆绑
aKey

<dict>
<key>Key</key>
<string>aKey</string>
<key>DefaultValue</key>
<false/>
</dict>

钥匙
阿凯
默认值

希望这有助于…

显示返回nil对象的代码,包括从何处调用该对象。另外,上面的代码在你的应用程序中的什么位置?您认为registerDefaults:应该做什么?myColor2变量类型是什么?关于registerDefaults如何工作的详细信息,你读过这里的参考资料了吗?不知怎么的,我没有找到这篇老文章,但我有一个相同的场景:除了我在viewDidLoad中调用我的默认值,ViewWillDisplay(viewDidLoad在应用程序每次启动时都被调用,所以它显然也需要在那里)对不起,伙计们。您提到的所有内容都是有效的,但结果是:
String==@“Blue”//而不是String isEqualToString:@“Blue”
奇怪的是,在您关闭应用程序之前,它工作得很好。但事后,它改变了它的想法。再次感谢!啊。。。我懂了。在比较字符串时始终使用isEqualToString:看起来==运算符比较的是对象地址而不是它们的内容!!!(不客气^ ^)我建议您阅读文档,registerDefaults:用于与setValue:forKey:不同的用途: