iPhone 和 NSUserDefaults

标签 iphone objective-c settings preferences nsuserdefaults

在我的 viewWillLoad: 方法中,我目前正在执行以下操作:

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

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

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

最佳答案

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

关于iPhone 和 NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1546005/

相关文章:

ios - 在 icloud 上禁用文档文件夹及其所有子文件夹的备份?

iphone - 不兼容的指针类型将 'NSURL *__strong' 发送到类型为 'NSString *' 的参数

iphone - UIView不显示 socket

github - PhpStorm设置存储库在不支持HEAD的情况下在 repo 上提交

iphone - 在 Settings.app 中隐藏应用程序特定的设置

iphone - 在heightForRowAtIndexPath方法中获取单元格的宽度

objective-c - Objective C 中未定义选择器的警告如何工作?

objective-c - 使用从 textFields 创建的对象填充 NSTableView

ios - 如何从货币代码中获取国家名称?

Android:以编程方式访问文件关联