【问题标题】:How to work with Settings.bundle如何使用 Settings.bundle
【发布时间】:2013-03-11 17:32:26
【问题描述】:

我正在使用最新的 SDK 开发 iOS 应用。

我创建了一个Settings.bundle 和一个Root.plist 和另外四个.plist,这些文件上的每个设置都有各自的默认值。

这是我第一次与Settings.bundle 合作,我迷路了。我发现了这个question,他们说我每次运行应用程序时都必须阅读Settings.bundle 默认值,但我不明白为什么。

我想我必须在此处继续使用NSUserDefaults 来读取设置值。

我有这些问题:

  1. 如何使用设置应用读取这些设置中设置的值?
  2. 我如何知道用户是否更改了这些值中的一个或多个?用户使应用程序进入后台,打开设置应用程序并更改某些内容。我如何以编程方式知道这一点?
  3. 如何保存任何修改(设置值的更改)并在“设置”应用中查看该更改?

顺便说一句,现在我有这个代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    // Set the application defaults
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if (![defaults boolForKey:@"firstRun"])
    {
        NSDictionary *appDefaults = [PreferenceDefaultValues dictionary];
        [defaults registerDefaults:appDefaults];

        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstRun"];

        [defaults synchronize];
    }

    return YES;
}

【问题讨论】:

    标签: ios settings


    【解决方案1】:
    1. Settings.bundle plist 中任何首选项的identifier 可以通过NSUserDefaults 访问。例如,如果您有一个标识符名为 allowDiagnostics 的首选项,那么您可以使用 [NSUserDefaults standardUserDefaults] boolForKey:@"allowDiagnostics"] 访问该项目的值(假设它是一个 BOOL 项目)。

    2. 您可以使用NSUserDefaultsDidChangeNotification 来获取有关您的偏好的任何更改的通知。

    3. 与您阅读它们的方式相同。继续 1 的示例,[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"allowDiagnostics"]。但请注意,允许用户从多个位置(Settings.bundle 和应用中的某处)更改选项可能会让用户感到困惑。

    【讨论】:

    • 感谢您的回答。每次我的应用启动时我都必须做[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];吗?
    • 我通常把那行代码放在我的applicationDidFinishLaunching:withOptions
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2011-10-11
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多