0

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被调用的..

谢谢你的帮助!

4

1 回答 1

0

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

这就是我编写 NSUserDefault 并检索它的方法:

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

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

setObject 不是唯一的选择:setBool、setFloat、setInteger 和另一方面 boolForKey、floatForKey、integerForKey 也很好。

不要忘记在您的项目中设置Settings.bundle和:aKey

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

希望这可以帮助...

于 2012-03-15T17:48:43.337 回答