在我的 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/