NSUserDefaults不可靠?

时间:2016-04-13 08:33:59

标签: ios swift nsuserdefaults

我正在使用NSUserDefaults在我的应用程序中存储键/值对。以下是示例代码:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    let ud = NSUserDefaults.standardUserDefaults()
    if !(ud.boolForKey("launched_before")) {
        print("first_launch")
        ud.setBool(true, forKey: "launched_before")
    } else {
        print("not_first_launch")
    }
}

我第一次启动应用程序时,会按预期打印“first_launch”,第二次启动应用程序时,它也按预期打印“not_first_launch”。但是,如果我在几次(可能是4到20次)后按下Xcode中的“停止并运行”按钮继续重新启动应用程序,boolForKey("launched_before")将返回false,这是错误的。
我正在我的设备(iPhone 6,iOS 9.3.1)和Xcode 7.3上进行测试 有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

NSUserDefaults确实存储不可靠,更糟糕的是你通过Xcode停止/运行终止它。

调用NSUserDefaults.StandardUserDefaults().synchronize将保存数据。