2015-09-14 68 views
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没有保存启动之间的信息。为什么?

+1

这里阅读这样的解释:http://stackoverflow.com/a/21868541/1463604 – Nishant

+0

出于好奇,你能尝试保存TRUE;而不是' FALSE'?你会得到相同的结果吗? – dasblinkenlight

+0

有'NSUserDefaults'的'boolForKey:'和'setBool:forKey:'指定的方法' – vadian

回答

0

忘了在didFinishLauncing方法的开头添加kaki = NSUserDefaults.standardUserDefaults().objectForKey("kaki") as? Bool