Swift:HighScore / NSUserDefaults

时间:2014-11-23 12:55:36

标签: swift sprite-kit nsuserdefaults

我的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的问题,而没有任何复杂性?

1 个答案:

答案 0 :(得分:1)

史蒂夫在相关问题中的回答根本就没有使用NSUserDefaults,相反,他正在归档&从" highScore.archive"中检索高分。文件存储在应用程序的文档目录中。

您提出的任何解决方案都应该忘记用户默认值,而是依赖您实例化的HighScore对象(加载并保存到highScore.archive文件中)。