问题描述
|
我的设置包中有一个Toggle Switch,但它第一次无法使用。当我再次更改设置中的值时,它正在正确工作。
甚至我在使用值之前都要进行同步:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults synchronize];
if([userDefaults boolForKey:@\"KeyName\"]) {
//Do Some Work
}
我现在要做什么?
解决方法
我认为您在这里遇到的是一个非常奇怪的问题,即直到用户第一次运行设置应用程序时,才加载设置捆绑包中的设置。
直接来自苹果公司:
对于新安装的应用程序,
来自的默认首选项值
应用程序的“设置”捆绑包不是
设置直到设置应用程序
运行。这意味着如果用户运行
您的应用程序在运行之前
设置,指定默认值
在您的“设置”捆绑中
不可用。
有关更多信息,请参阅:Apple的文档
,由于您尚未注册默认值,因此我认为您正面临此问题。
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:@\"defaultValueFOrKey\",@\"Key\",nil]];
在正常情况下,我们将为此设置包中所有键的默认值创建一个plist文件,并将其注册为
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@\"Defaults\" ofType:@\"plist\"]]];