Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSUserDefaults不保留数据_Ios_Nsuserdefaults_Data Persistence - Fatal编程技术网

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