更新变量的 NSUserDefaults

Update NSUserDefaults for a variable

我正在尝试更新一个人在我的游戏中跳跃的总次数,但我遇到了一些问题。以下是那场比赛发生的跳跃次数和加时赛发生的跳跃次数的变量。

var timesJumped: Int = 0
var totalTimesJumped: Int = 0

我有一个 NSUserDefaults 的变量,所以即使应用程序关闭或关闭,它也会记住多少次。

var timesJumpedTotal = NSUserDefaults.standardUserDefaults().integerForKey("times jumped")

如果 timesJumpedTotal 我有这个代码块 运行 它应该总是 运行 并且是真的所以当我尝试将文本设置为此 timesJumpedTotal 我我得到一个空白文本字段。这有什么原因吗?

if timesJumpedTotal >= 0 {
        totalTimesJumped = totalTimesJumped + timesJumped
        NSUserDefaults.standardUserDefaults().setInteger(totalTimesJumped, forKey: "times jumped")
    }

在我想显示此统计信息的 SKScene 中,我有这段代码,它将节点的文本设置为 totalTimesJumped:

的文本
let timesJumped = NSUserDefaults.standardUserDefaults().integerForKey("times jumped")
totalTimesjumped = childNodeWithName("TotalTimesJumped") as! SKLabelNode
totalTimesjumped.text = "\(totalTimesjumped)"

我不确定为什么会这样,有人知道吗?

我刚才也试过了。

totalTimesJumped = totalTimesJumped + timesJumped
timesJumpedTotal = totalTimesJumped
NSUserDefaults.standardUserDefaults().setInteger(timesJumped, forKey: "high score")
NSUserDefaults.standardUserDefaults().synchronize()

尝试改变

if timesJumpedTotal >= 0 {
    totalTimesJumped = totalTimesJumped + timesJumped
    NSUserDefaults.standardUserDefaults().setInteger(totalTimesJumped, forKey: "times jumped")
}

收件人:

if timesJumpedTotal >= 0 {
    totalTimesJumped = timesJumpedTotal + timesJumped
    NSUserDefaults.standardUserDefaults().setInteger(totalTimesJumped, forKey: "times jumped")
}

看起来,当您从 NSUserDefaults 获取数据时,您实际上从未使用它来增加和重写总数。以不那么相似的方式命名变量将大大有助于解决问题。可能还有其他几个地方需要更改