init之后整数更改为0

时间:2015-05-14 15:09:25

标签: ios swift sprite-kit

我正在使用NSUserDefaults(StackOverflow link)在iOS Swift(Sprite Kit)游戏中保存高分。

声明如下:

var savedScore: Int = NSUserDefaults.standardUserDefaults().objectForKey("hiScore") as! Int

这将返回例如'2'作为高分。

如果高分被殴打,我会这样做:

if self.score > self.savedScore {

            NSUserDefaults.standardUserDefaults().setObject(self.score, forKey:"hiScore")
            NSUserDefaults.standardUserDefaults().synchronize()
            println("Synced")
        }

然而,问题是self.savedScore0的初始值之后变为2,导致在每场比赛后保存高分,因为每个可能得分高于0

如果此问题需要,可以提供附加代码。

谢谢!

1 个答案:

答案 0 :(得分:3)

您从NSUserDefaults获得分数并将其保存在新变量中:

var savedScore: Int = NSUserDefaults.standardUserDefaults().objectForKey("hiScore")

saveScore是每次调用此代码时创建的变量。 之后,您将得分与self.savedScore进行比较,这与savedScore:

不同
if self.score > self.savedScore { ... }

替换获得保存分数的第一行:

self.savedScore: Int = NSUserDefaults.standardUserDefaults().integerForKey("hiScore")

你应该使用integerForKey来获取数据,当你保存它时使用setInteger而不是setObject