我正在使用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上进行测试
有人可以帮帮我吗?
答案 0 :(得分:3)
NSUserDefaults确实存储不可靠,更糟糕的是你通过Xcode停止/运行终止它。
调用NSUserDefaults.StandardUserDefaults().synchronize
将保存数据。