我的设置包中有一个切换开关,但它第一次无法正常工作。当我在设置中再次更改该值时,它工作正常。
即使我在使用该值之前进行同步:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults synchronize];
if([userDefaults boolForKey:@"KeyName"]) {
//Do Some Work
}
我现在必须做什么?
我的设置包中有一个切换开关,但它第一次无法正常工作。当我在设置中再次更改该值时,它工作正常。
即使我在使用该值之前进行同步:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults synchronize];
if([userDefaults boolForKey:@"KeyName"]) {
//Do Some Work
}
我现在必须做什么?
我假设你正面临这个问题,因为你还没有注册你的默认值。
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:@"defaultValueFOrKey", @"Key", nil]];
在通常的实践中,我们将为此目的创建一个 plist 文件,其中包含设置包中所有键的默认值,并将其注册为
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];
我认为您在这里遇到的是一个相当奇怪的问题,即您的设置包中的设置直到用户第一次运行设置应用程序时才会加载。
直接来自苹果:
对于新安装的应用程序,应用程序设置包中的默认首选项值在设置应用程序运行之前不会设置。这意味着如果用户在运行 Settings 之前运行您的应用程序,则 Settings 包中指定的默认值不可用。
有关更多信息,请参阅:Apple 的文档