即使使用同步,NSUserDefaults也不会持久存在

时间:2012-03-15 17:34:40

标签: iphone xcode nsuserdefaults synchronize

我的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];

我在[[NSUserDefaults standardUserDefaults] synchronize]applicationDidEnterBackground中致电applicationWillTerminate,但没有成功。我 NSLogged 这两种方法,当我杀死应用程序时,我注意到只有DidEnterBackground被调用..

感谢您的帮助!

1 个答案:

答案 0 :(得分: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>

希望这会有所帮助......