NSUserDefaults未全球保存

时间:2015-09-18 11:34:23

标签: xcode swift nsuserdefaults

我有一个全球性的NSUser Bool()。当我关闭应用程序并再次运行它时,bool会保存,但是当我将我的退出值提交给我的sKcene时,sKcene仍然认为Bool值即使是最初的。我使用SwitchMainOnOff函数更改了值。请帮忙。

import AVFoundation
import Foundation
import SpriteKit
import GameKit
import UIKit
import iAd



var buttonState = NSUserDefaults.standardUserDefaults().objectForKey("buttonState") as! Bool

class SoundController: UIViewController {

func SwitchMainOnOff() {

        if SwitchMain.on == true {
            println("SwitchMain is on from function")
            SwitchMain.on = true
            NSUserDefaults.standardUserDefaults().setObject(Bool(true), forKey:"buttonState")



        }
        if SwitchMain.on == false {
            println("SwitchMain is off from function")
            SwitchMain.on = false
            NSUserDefaults.standardUserDefaults().setObject(Bool(false), forKey:"buttonState")

        }


     }
func Correct() {
    if buttonState == true{
        println("SwitchMain is on")
        SwitchMain.on = true
    }

    if buttonState == false{
        println("SwitchMain is off ")
        SwitchMain.on = false
    }
  }

@IBAction func SwitchMain(sender: AnyObject) {
    SwitchMainOnOff()


    }

我有一个UISwitch,如图所示会改变,以检查Bool在移动到其他场景时是否保存。它叫做SwitchMain。

2 个答案:

答案 0 :(得分:0)

尝试以这种方式在NSUserDefaults中设置你的bool:

NSUserDefaults.standardUserDefaults().setBool(true, forKey: "buttonState")

您的代码将是:

if SwitchMain.on == true {
    println("SwitchMain is on from function")
    SwitchMain.on = true
    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "buttonState")

}
    if SwitchMain.on == false {
    println("SwitchMain is off from function")
    SwitchMain.on = false
    NSUserDefaults.standardUserDefaults().setBool(false, forKey: "buttonState")

}

以这种方式读取值:

let switchState = NSUserDefaults.standardUserDefaults().boolForKey("buttonState")

答案 1 :(得分:0)

更新NSUserDefaults后请致电以下方法:

NSUserDefaults.standardUserDefaults().synchronize()

另外,像Dharmesh在下面提到的那样塑造代码。