ios - 更新变量的 NSUserDefaults

标签 ios swift skscene

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

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 获取数据时,您实际上从未使用它来增加和重写总数。不那么相似地命名变量将有助于解决问题。可能还有其他几个地方需要更改

关于ios - 更新变量的 NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37739253/

相关文章:

ios - 在 Swift 4 中读取来自 Facebook Graph Request 的响应

ios - 展开时 SKScene 到 SKScene 零问题

ios - 如何在 SKScene 的多个 ViewController 之间进行转换?

android - 如何在 React Native 中开发时间轴屏幕

ios - 核心数据不断创建正在保存的文档...文件夹

ios - Swift 4.2 已经在文档中了吗?

iphone - 触摸速度

iOS Swift 代码从 App Store 获取最新版本的应用程序我的应用程序

ios - Swift 中的 UIView 动画不起作用,参数错误

ios - 如何在 Sprite 套件项目中设置初始场景?