2012-03-15 114 views
0

我的NSUserDefaults在应用运行或最小化时正常工作。但是,如果我杀了应用程序并重新启动它,返回的对象是null。代码:即使使用同步,NSUserDefaults也不会持续存在

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

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

[colorDefault synchronize]; 

我打电话[[NSUserDefaults standardUserDefaults] synchronize]在我applicationDidEnterBackground并在applicationWillTerminate,没有成功。我NSLogged这两种方法,当我杀了应用程序,我注意到只有DidEnterBackground被称为..

感谢您的任何帮助!

+1

显示在正在返回nil对象,包括它是从哪里调用的代码。另外,在你的应用程序中的上述代码?你认为registerDefaults:应该做什么? – jrturton 2012-03-15 17:40:50

+2

什么是myColor2变量类型?你有没有阅读这里的参考https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html关于registerDefaults如何工作的细节? – 2012-03-15 17:45:14

+0

不知何故,我没有找到这个较旧的帖子,但我有一个IDENTICAL场景:[here](http://stackoverflow.com/questions/6349648/nsuserdefaults-wont-save-permanantly) 除了我打电话给我在viewDidLoad和viewWillAppear(viewDidLoad每次启动时都会调用viewDidLoad,所以它显然需要在那里) – Gravemind 2012-03-15 20:21:08

回答

0

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

这是什么,我写NSUserDefault和检索它:

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

// read 
[[NSUserDefaults standardUserDefaults] objectForKey:@"aKey"]; 

的setObject是不是唯一的选择:setBool,的setFloat,setInteger并在另一侧boolForKey,floatForKey,integerForKey都一样好。

不要忘记设置Settings.bundleaKey在您的项目:

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

希望这有助于...

+0

对不起。你提到的所有东西都是有效的,但它最终是这样的: 'String == @“Blue”//而不是 String isEqualToString:@“Blue”' 怪异的如何在关闭应用程序前正常工作。但是,后话改变了它的思想。再次感谢! – Gravemind 2012-03-15 21:35:42

+0

啊......我明白了。比较字符串时总是使用isEqualToString:似乎==运算符比较对象地址而不是它们的内容! (欢迎你^ _ ^) – Beppe 2012-03-15 23:26:52

+0

我建议你阅读文档registerDefaults:用于与setValue不同的东西:forKey:http://developer.apple.com/library/mac/documentation/Cocoa/Reference/基金会/班/ NSUserDefaults_Class /参考/#的reference.html // apple_ref/OCC/instm/NSUserDefaults的/ registerDefaults: – Omer 2013-07-08 19:04:39

相关问题