Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift:高分/默认值_Swift_Sprite Kit_Nsuserdefaults - Fatal编程技术网

Swift:高分/默认值

Swift:高分/默认值,swift,sprite-kit,nsuserdefaults,Swift,Sprite Kit,Nsuserdefaults,我对默认设置有问题 我遵循了史蒂夫的回答: 现在,我有个问题。当我的游戏场景即将结束时,在转移到GameOverScene之前,我会执行以下操作: if scene.score > Score.highScore { var defaults = NSUserDefaults() defaults.setInteger(scene.score, forKey: "highScore") println("score1, highsc

我对默认设置有问题

我遵循了史蒂夫的回答:

现在,我有个问题。当我的游戏场景即将结束时,在转移到GameOverScene之前,我会执行以下操作:

    if scene.score > Score.highScore {
        var defaults = NSUserDefaults()
        defaults.setInteger(scene.score, forKey: "highScore")
        println("score1, highscore1")
        println(scene.score)
        println(Score.highScore)
    }
你可以看到,我将游戏场景的分数与最高分数进行比较,然后将最高分数的整数设置为玩家所达到的场景分数。 然而,程序打印正确地输出了当前分数,保持高分不变,为0。 在我尝试之前:

Score.HighScore = scene.score // changing Score.HighScore to the scene.score manually. 
不幸的是,它没有起作用。 下面是完整的HighScore类,它负责保存和检索HighScore:

谢谢你的帮助


编辑:或者,也许有人知道将某些内容保存到NSUserDefaults的更简单的解决方案,而不需要那么复杂

Steve在相关问题中的回答根本没有使用NSUserDefaults,而是从应用程序文档目录中的“
highScore.archive
”文件存储中存档和检索高分


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

Score.highScore=scene.Score
你可能错过了这个吗?如你所见,我已经尝试过了。Score.highScore与Score.highScore不一样。那么我该如何从不同的场景访问存档并修改它呢?当你在不同的场景中实例化(或创建)该对象时,它将加载当前保存在“
highScore.archive
”文件中的高分。因此,您需要确定的是,前一个场景已经正确地保存了新的高分(例如,史蒂夫回答中的“
SaveHighScore().ArchiveHighScore(highScore:score)
”位)。要加载高分,您可以执行以下操作:
var retrievedhightscore=SaveHighScore()。RetrieveHighScore()作为HighScore
。有道理吗?有道理!现在它打印出了分数,以及分数的正确整数的高分。但是(我知道,我很痛苦,我很抱歉),当我把RetrieveHighScore放在我的SKLabel中时,它得出了这样的结论:分数:5,highscore:看到Steve用RetrieveHighScore做了什么吗?他将其制作成一个
highscore对象
,并能够在其上执行
println
。确保
SaveHighScore.ArchiveHighScore()