Ios NSUserDefaults不保留数据
我使用用户默认值在应用程序启动之间存储信息。这是我在应用程序代理中使用的代码:Ios NSUserDefaults不保留数据,ios,nsuserdefaults,data-persistence,Ios,Nsuserdefaults,Data Persistence,我使用用户默认值在应用程序启动之间存储信息。这是我在应用程序代理中使用的代码: var kaki: Bool! func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { if kaki == nil{ print("kaki is nil")
var kaki: Bool!
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
if kaki == nil{
print("kaki is nil")
kaki = false
NSUserDefaults.standardUserDefaults().setObject(kaki, forKey: "kaki")
NSUserDefaults.standardUserDefaults().synchronize()
print("kaki now has value")
}else{
print("kaki already has value")
kaki = NSUserDefaults.standardUserDefaults().objectForKey("kaki") as! Bool
}
func applicationWillResignActive(application: UIApplication) {
NSUserDefaults.standardUserDefaults().setObject(kaki, forKey: "kaki")
NSUserDefaults.standardUserDefaults().synchronize()
}
在我的viewController中,我有以下代码:
@IBAction func makeButtonRedIfKakiIsTrue(sender: UIButton) {
print("kaki is \(appDel.kaki)")
if appDel.kaki == true{
restoreItems.backgroundColor = UIColor.redColor()
}
appDel.kaki = true
}
我运行此代码,单击按钮
makebuttonredfkakistrue
,关闭应用程序。然后从设备上再次启动它。我点击按钮,但颜色不变。为什么不改变呢?因为kaki
再次被设置为false
,尽管我之前单击makebuttonredfkakistrue
时将其设置为true。我的结论是…NSUserDefaults没有在两次发布之间保存信息。为什么?忘记将kaki=NSUserDefaults.standardUserDefaults().objectForKey(“kaki”)添加为?Bool
在didFinishLauncing
方法的开头,请阅读以下说明:出于好奇,您能否尝试保存true
而不是false
?你会得到同样的结果吗?有指定的方法boolForKey:
和setBool:forKey:
的NSUserDefaults
@Nishant我确实已经在willResignActive中调用了synchornize。我还把它添加到了背景中。相同的结果。@dasblinkenlight我在所有地方都切换了true和false,但仍然得到相同的结果。有人建议我使用objectForKey