【问题标题】:Settings.bundle vs NSUserDefaultsSettings.bundle 与 NSUserDefaults
【发布时间】:2010-12-05 17:12:23
【问题描述】:

我的 settings.bundle 配置为显示 4 个设置,我希望用户访问/更改这些设置。在应用程序生命周期中,我还有另外几个值,我存储在 NSUserDefaults 中,但我不希望它们出现在 Settings.app 中。 settings.bundle 中的值的数量是否可能与存储在 NSUserDefaults 中的键/值对的实际数量不同?为了妥善管理它必须做些什么?

谢谢,

【问题讨论】:

    标签: iphone nsuserdefaults settings.bundle


    【解决方案1】:

    设置包中的键/值对由 [NSUserDefaults standardUserDefaults] 管理,但没有什么可以阻止您添加自己的键和值进行管理。除非您将它们添加到包的属性列表中,否则它们不会显示在您应用的设置屏幕中。

    只需以相同的方式注册、存储和检索用户默认值,无论是否来自您的设置包;不需要做任何额外的事情。

    【讨论】:

    • 我是否应该每次在 applicationDidFinishLaunchingWithOptions 中调用 registerDefaults...?还是只是第一次?我问是因为某个字符串设置第二次返回 nil。第一次我用默认值注册它,第二次我得到 nil ...
    • @Nava Carmon:嗯,我每次打电话给registerDefaults:都没有遇到过问题...
    • 如果我不从 settings.app 更改此值,就会发生这种情况。每次我重新加载我的应用程序时,NSUserDefaults 都会为这个特定值返回 nil。只有在我在 Settings.app 中更改它之后,它才会返回更改后的值。我如何解决它?我在注册后和 applicationWillEnterBackground 函数中同步我的默认值?
    • 如果它只影响这一个键,请尝试删除并创建一个具有不同名称或其他内容的键,看看问题是否消失。
    • 我不介意每次从 settings.bundle 的 Root.plist 中获取一个值,只要它在更改后采用正确的值即可。只是有点头疼。无论如何,感谢您为我订购了这个主题。
    猜你喜欢
    • 2014-12-22
    • 2012-01-21
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多