2013-03-28 50 views
1

我不明白的逻辑:当我创建通过Settings.bundle ...为什么我的代码不能通过[NSUserDefaults standardUserDefaults]访问值?

[[NSUserDefaults standardUserDefaults] stringForKey:@"mykey1"] 

从代码访问,但是当设置捆绑值是零

,只要我通过Settings.app触摸该键此关键是我的代码可读。

解决方案我发现需要读取文件“Root.plist”,从它建立一个字典,register的值和synchronize他们。

我多次阅读Apple文档 - 我仍然不理解用一组标准设置提供应用程序的想法和标准模式。

我学习的任何提示?

回答

2

Settings.bundle的存在对NSUserDefaults没有任何影响。直到从默认值改变值,该值反映在NSUserDefaults中。

正确的解决方案是使用NSUserDefaults registerDefaults:。在很多情况下,您可以使用Root.plist的内容加载默认字典。你不需要为此调用synchronize。每次运行应用程序时都会注册默认设置。这些值实际上并不存储。当您询问NSUserDefaults的值时,如果不存在明确的值,则会查看已注册的默认值。

您应该在应用程序启动时尽快注册默认设置。

+0

谢谢!我仍然感到困惑:苹果为什么不提供至少应用程序使用Settings.bundle作为默认值的选项?这个任务是否有标准的实现?我见过一对夫妇,他们看起来不太平等,所以这里有什么建议? – tschloss

相关问题