替代NSUserDefaults以节省布尔值?

时间:2018-09-16 14:58:25

标签: objective-c boolean nsuserdefaults

当前,我正在使用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的值为nilNO,即使应为YES(即使在强制退出后也是如此)。

我在Stackoverflow上看到其他人也遇到类似的herehere

由于它看起来是随机的,因此很难复制,但是,尽管一段时间以来没有启动Application,但它的确出现的频率更高。

对于这种设置,有什么替代方法可以存储BOOL值?

1 个答案:

答案 0 :(得分:0)

我认为,当您更改数据时,NSUserDefaults发送了一条同步消息,但是您退出了程序,并且数据没有保存。

因此,您需要手动调用synchronize来保存数据。