我对 NSUserDefaults 有疑问。
我遵循史蒂夫的回答: Saving highscores with NSUserDefaults
现在,我遇到了一个问题。当我的 GameScene 即将结束时,在初始化到 GameOverScene 的传输之前,我执行以下操作:
if scene.score > Score.highScore {
var defaults = NSUserDefaults()
defaults.setInteger(scene.score, forKey: "highScore")
println("score1, highscore1")
println(scene.score)
println(Score.highScore)
}
你可以看到我将游戏场景得分与最高分进行比较,然后将最高分的整数设置为该玩家获得的场景得分。 然而,程序正确地打印出了当前分数,而 highScore 保持不变,为 0。 在我尝试做之前:
Score.HighScore = scene.score // changing Score.HighScore to the scene.score manually.
不幸的是,没有成功。 这是完整的 HighScore 类,用于处理保存和检索高分: http://pastebin.com/dz3b3WAk
感谢任何帮助。
编辑:或者也许,有人知道将某些内容保存到 NSUserDefaults 的更简单的解决方案,而不需要那么复杂?
最佳答案
史蒂夫在该相关问题中的回答根本不使用 NSUserDefaults,而是从应用程序文档目录中的“highScore.archive
”文件存储中存档和检索高分。
您提出的任何解决方案都应该忘记用户默认值,而依赖于您实例化的 HighScore 对象(该对象加载并保存到 highScore.archive
文件中)。
关于Swift:高分/NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27089189/