可能重复:
Multivalue type settings bundle fields alway return null
我的iOS应用中有一个设置包,可在设置app
中生成下表在我的应用中,我尝试使用NSUserDefaults生成相同的表,最后得到this
我检索值的代码是:
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始终返回空值。我似乎无法让我的应用程序识别我在设置包中定义的默认参数。
以下是我的设置bundle
答案 0 :(得分: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:
文档中所述。
注册域的内容不会写入磁盘;每次应用程序启动时都需要调用此方法。您可以将plist文件放在应用程序的Resources目录中,并使用从该文件中读取的内容调用registerDefaults:。