【问题标题】:Settings.bundle ... why can't my code access the values via [NSUserDefaults standardUserDefaults]?Settings.bundle ... 为什么我的代码不能通过 [NSUserDefaults standardUserDefaults] 访问这些值?
【发布时间】:2013-03-28 23:01:57
【问题描述】:

我不明白逻辑:

当我创建一个设置包时,从代码访问时值为零

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

但只要我通过 Settings.app 触摸此键,我的代码就可以读取此键。

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

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

对我的学习有什么建议吗?

【问题讨论】:

    标签: iphone ios nsuserdefaults settings.bundle


    【解决方案1】:

    Settings.bundle 的存在对NSUserDefaults 没有任何影响。直到某个值从其默认值更改后,该值才会反映在 NSUserDefaults 中。

    正确的解决方案是使用NSUserDefaults registerDefaults:。在许多情况下,您使用Root.plist 的内容加载默认值字典。您无需为此致电synchronize。每次您的应用程序运行时都会注册默认值。这些值并未实际存储。当您从 NSUserDefaults 请求一个值时,如果不存在显式值,则会查看注册的默认值以获取值。

    您应该在应用启动时尽快注册默认值。

    【讨论】:

    • 谢谢!我仍然很困惑:为什么 Apple 至少不提供应用程序使用 Settings.bundle 作为默认值的选项?此任务是否有标准实现?我见过一对,他们看起来不一样,所以这里有什么建议吗?
    猜你喜欢
    • 2015-01-05
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多