无法访问用户默认值

时间:2014-02-08 13:15:27

标签: macos cocoa nsuserdefaults

我为自己的应用创建了偏好设置面板。我使用首选项窗格将一些基本设置存储到userdefaults中。我无法从应用程序访问这些设置值。

将设置保存为用户默认值,如下所述:

NSString *fooBar = @"settings_value";
NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
[userDef setObject:fooBar forKey:@"app_setting"];
[userDef synchronize];

现在,当我从应用程序访问它时:

NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
NSString *svcEnv = [userDef objectForKey:@"app_setting"];

我得到零值。但是当从首选项窗格项目访问时,我将获得设置值,但不会在应用程序中。

如何在应用程序中检索设置值?

2 个答案:

答案 0 :(得分:1)

[NSUserDefaults standardUserDefaults]返回当前应用程序的默认值,在首选项窗格的情况下,系统首选项应用程序。相反,您需要使用具有捆绑包标识符的域的首选项,该捆绑包包含您的首选项窗格的类:

NSUserDefaults *suds = [NSUserDefaults standardUserDefaults];
NSString * bundleID = [[NSBundle bundleForClass:[self class]] bundleIdentifier];

NSMutableDictionary *prefs = [[suds persistentDomainForName:bundleID] mutableCopy];

要将它们保存回来使用:

[suds setPersistentDomain:prefs forName:bundleID];
[sud synchronize];

答案 1 :(得分:0)

您应该使用stringForKey:

NSString *svcEnv = [userDef stringForKey:@"app_setting"];