我有,我使用注册一些默认+(void)initialize方法的AppDelegate类。这里,我使用的代码:

+ (void)initialize {
  NSDictionary *defaults = [NSDictionary dictionaryWithObjectsAndKeys:@"NO", @"fooKey", @"YES", @"barKey", nil];

  [[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
}

我还创建Preferences.xib保持夫妇复选框(NSButton)喜好的显示状态的。他们绑定相同的密钥(fooKey和barKey在这种情况下),以NSUserDefaultsController。每次我启动一个应用程序,并改变它的“默认值”,他们被还原上下一应用程序启动。

有没有注册“默认缺省值”,而不会覆盖已经存在的价值呢?也许每一个我建立并启动一个应用程序的首选项文件的时间被重现?也许我应该解除绑定NSUserDefaultsController复选框和维护密钥自己的价值观与喜好的窗控制器一些自定义代码?

我想听听您所选择的实现,以便维护用户的默认值。

我使用Mac OS X 10.6.2和的XCode 3.2.1

有帮助吗?

解决方案

这对于-registerDefaults:的文件(强调):

  

的注册域的内容不被写入磁盘; 您需要每次在应用程序启动即可调用此方法。您可以将一个plist文件在应用程序的资源目录和呼叫registerDefaults:以您在从文件中读取内容

所以,你的代码是在正确的轨道上。这是你如何注册默认的缺省值。

我通常在-applicationDidFinishLaunching:使用此:

// Load default defaults
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];

使用的plist可以很容易地添加和更改默认在您的应用程序,并阻止您使用@"NO"作为值过的错误。

编辑:的夫特3 变体:

 UserDefaults.standard.register(defaults: NSDictionary(contentsOf: Bundle.main.url(forResource: "Defaults", withExtension: "plist")!)! as! [String : Any])
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top