目前我正在使用NSUserDefaults
来保存和加载这样的bool值:
-(void)saveSettingOn{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:hapticKey];
}
-(void)saveSettingOff{
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:hapticKey];
}
-(void)loadSetting{
isHapticOn = [[NSUserDefaults standardUserDefaults] boolForKey:hapticKey];
}
在发布时,我加载AppDelegate
中的设置,如下所示:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self loadSetting];
return YES;
}
有时当我启动应用程序时,hapticKey
的值为nil
或NO
,即使它应该是YES
(即使在强制退出之后)。
我在Stackoverflow上看到其他人经历过类似的here和here。
它很难重现,因为它似乎是随机的,但是当应用程序暂时没有启动时,它似乎确实更常出现,尽管这可能是重合的。
有什么替代品可以存储这样的设置的BOOL
值?
我认为当您更改数据时,NSUserDefaults
会发送同步消息,但您退出程序并且数据未保存。
所以你需要手动调用synchronize
来保存数据。