替代NSUserDefaults来保存Bool?

问题描述 投票:0回答:1

目前我正在使用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

它很难重现,因为它似乎是随机的,但是当应用程序暂时没有启动时,它似乎确实更常出现,尽管这可能是重合的。

有什么替代品可以存储这样的设置的BOOL值?

objective-c boolean nsuserdefaults
1个回答
0
投票

我认为当您更改数据时,NSUserDefaults会发送同步消息,但您退出程序并且数据未保存。

所以你需要手动调用synchronize来保存数据。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.