在加载应用程序时,NSUserDefaults发生了一些奇怪的事情

The*_*imp 4 iphone nsuserdefaults ios ios5

我有一个应用程序使用几个不同的用户默认值,需要在应用程序加载后立即使用.其中一个负责将地图视图放大到用户位置.

我遇到的问题是,当我加载用户默认值时,似乎认为它们是空的,直到我通过设置应用程序更改它们.

这里发生了什么?我正在使用iOS 5,不确定它是否对它有任何影响.这真的很烦人,因为我的应用程序依赖于加载时可用的数据.

注意:在我更改/重新选择设置视图中的值后,它可以正常工作.

cho*_*own 7

synchronize设置值后确保您的呼叫:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"someKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

编辑回答评论:

从以下文档-registerDefaults::

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

所以,-applicationDidFinishLaunching:你可以在这里注册你的Root.plist默认值:

[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Root" ofType:@"plist"]]];
Run Code Online (Sandbox Code Playgroud)