0
我使用用户默认值在应用程序启动之间存储信息。这是我使用的应用程序委托代码:NSUserDefaults不会保留数据
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
}
我运行这段代码,谢谢点击按钮makeButtonRedIfKakiIsTrue
,关闭应用程序。然后从设备再次启动它。我点击按钮,但颜色不变。为什么不改变?因为kaki
再次是false
,虽然我之前单击makeButtonRedIfKakiIsTrue
时将其设置为true。我得出的结论.... NSUserDefaults没有保存启动之间的信息。为什么?
这里阅读这样的解释:http://stackoverflow.com/a/21868541/1463604 – Nishant
出于好奇,你能尝试保存TRUE;而不是' FALSE'?你会得到相同的结果吗? – dasblinkenlight
有'NSUserDefaults'的'boolForKey:'和'setBool:forKey:'指定的方法' – vadian