启动应用程序时,NSUserDefaults出现异常情况

4
我有一个应用程序,使用了几个不同的用户默认设置,需要在应用程序加载时使用。其中之一负责将地图视图缩放到用户位置。
我遇到的问题是,当我加载用户默认设置的值时,它似乎认为它们为空,直到我通过设置应用程序更改它们。
这里发生了什么? 我正在使用iOS 5,不确定是否会产生任何影响。 这真的很烦人,因为我的应用程序依赖于在加载时可用的数据。
注意:在设置视图中更改/重新选择值后,它完全正常工作。
1个回答

7

设置值后,请确保调用synchronize

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"someKey"];
[[NSUserDefaults standardUserDefaults] synchronize];

回答评论:

-registerDefaults:的文档中:

注册域的内容不会写入磁盘; 你需要在每次应用程序启动时调用此方法。您可以将一个plist文件放置在应用程序的资源目录中,并使用从该文件中读取的内容调用registerDefaults:

因此,在-applicationDidFinishLaunching:中,您可以像这样注册您的Root.plist默认值:

[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Root" ofType:@"plist"]]];

问题更多地围绕在我第一次加载应用程序时。例如,想象一下我刚刚安装了它,所以我还没有选择任何设置。问题在于无法获取我在Root.plist中设置的默认值。 - user843337
@JonW09 随时都可以)。乐意帮忙。 - chown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接