2

可能重复:
多值类型设置捆绑字段总是返回 null

我的 iOS 应用程序中有一个设置包,它在设置 应用程序中生成下表

在我的应用程序中,我尝试使用 NSUserDefaults 生成同一个表并最终得到这个

我检索值的代码是:

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
ds->use_cache = [userDefaults boolForKey:@"use_cache"];
ds->high_bitrate = [userDefaults boolForKey:@"high_bitrate"];

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[[cell detailTextLabel] setText:[defaults stringForKey:@"version"]];

键为“version”的 stringForKey 始终返回空值。我似乎无法让我的应用程序识别我在设置包中定义的默认参数。

这是我的设置

4

1 回答 1

3

应使用该registerDefaults:方法设置设置的默认值。这设置了NSRegistrationDomain它们将可用的位置。下面是一个例子。感谢 jrturton 和 Matthias Bauch 指出了我之前提到的第一个答案的问题http://greghaygood.com/2009/03/09/updating-nsuserdefaults-from-settingsbundle

NSDictionary *appDefaults = [ NSDictionary
                              dictionaryWithObject:@"default_version_value" forKey:@"version" ];

[ [ NSUserDefaults standardUserDefaults ] registerDefaults:appDefaults ];

NSUserDefaults *userDefaults = [ NSUserDefaults standardUserDefaults ];

另请注意,每次应用程序启动时都需要设置这些默认值,如registerDefaults:.

注册域的内容不写入磁盘;您需要在每次应用程序启动时调用此方法。您可以在应用程序的 Resources 目录中放置一个 plist 文件,然后使用从该文件中读取的内容调用 registerDefaults:。

于 2012-11-18T08:00:11.487 回答