0

我正在使用用户默认值来存储应用程序启动之间的信息。这是我在 App Delegate 中使用的代码:

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,虽然我在之前单击时将其设置为 true makeButtonRedIfKakiIsTrue。我得出结论......NSUserDefaults 没有在启动之间保存信息。为什么?

4

1 回答 1

0

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

于 2015-09-14T13:29:45.830 回答