2

在我的viewWillLoad:方法中,我目前正在按照以下方式做一些事情:

- (void)viewWillAppear:(BOOL)animated {
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   if ( [defaults boolForKey:@"enabled_preference"] ) {
      ...   
   } else {
      ...   
   }
   [super viewWillAppear:animated];
}

如果我在打开首选项窗格(使用普通Settings.bundle构建)之前构建并运行应用程序,那么 bool 似乎是NO(或更可能是nil)而不是默认的YES。但是,如果我在打开应用程序之前打开设置应用程序并查看应用程序首选项窗格,一切都会按预期工作。

我假设应用程序首选项未初始化,我应该将它们初始化为应用程序委托中的默认值(如果尚未设置)。有人可以证实这一点吗?还是我在这里错过了其他明显的东西?

4

2 回答 2

4

您应该使用在您的代码中提供默认值-registerDefaults:。这通常在+initialize任何类使用设置的方法中完成。请参阅使用 NSUserDefaults

于 2009-10-09T20:59:21.087 回答
3

使用初始化方法有效,但我喜欢stackoverflow 上的另一个答案,它有代码从包中读取默认值并使用它们来初始化默认值。这样您就不必在代码中硬编码默认设置,它们位于它们所属的 plist 中。

于 2009-10-09T22:07:09.340 回答