我有一个全球性的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。
答案 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在下面提到的那样塑造代码。