我的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)
}
你可以看到我将gameScene得分与高分进行比较,然后将高分的Integer设置为场景的一个,该玩家获得了。 然而,程序打印正确地输出当前得分,使得highScore保持不变,为0。 在我尝试之前:
Score.HighScore = scene.score // changing Score.HighScore to the scene.score manually.
不幸的是,没有用。 这是完整的HighScore类,用于处理保存和检索高分: http://pastebin.com/dz3b3WAk
任何帮助表示感谢。
编辑:或者,有人知道更容易解决将某些东西保存到NSUserDefaults的问题,而没有任何复杂性?答案 0 :(得分:1)
highScore.archive
"中检索高分。文件存储在应用程序的文档目录中。
您提出的任何解决方案都应该忘记用户默认值,而是依赖您实例化的HighScore对象(加载并保存到highScore.archive
文件中)。