我的设置包中有一个切换开关,但它第一次无效。当我在设置中再次更改值时,它正在正常工作。
即使我在使用值之前同步:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults synchronize];
if([userDefaults boolForKey:@"KeyName"]) {
//Do Some Work
}
我现在要做什么?
答案 0 :(得分:5)
我假设您遇到此问题,因为您尚未注册默认值。
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:@"defaultValueFOrKey", @"Key", nil]];
在正常情况下,我们将为此目的创建一个plist文件,其中包含设置包中所有键的默认值,并将其注册为
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];
答案 1 :(得分:4)
我认为您在这里遇到的是一个相当奇怪的问题,即在用户第一次运行设置应用程序之前,设置包中的设置不会加载。
直接来自Apple:
对于新安装的应用程序, 来自的默认首选项值 应用程序的设置包不是 设置直到设置应用程序 运行。这意味着如果用户运行 运行之前的应用程序 设置,指定的默认值 在您的设置包中 不可用。
有关详细信息,请参阅:Apple's Documentation