我正在使用NSUserDefaults(StackOverflow link)在iOS Swift(精灵工具包)游戏中保存高分。
声明如下:

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.savedScore在初始值0之后变为2,导致每次比赛后都会保存较高的分数,因为每个可能的分数都高于0
如果此问题需要,可以提供其他代码。
谢谢!

最佳答案

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

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

saveScore是每次调用此代码时创建的变量。
之后,将分数与self.savedScore(与savedScore不同)进行比较:
if self.score > self.savedScore { ... }

将获得保存分数的第一行替换为:
self.savedScore: Int = NSUserDefaults.standardUserDefaults().integerForKey("hiScore")

您应该使用integerworky来获取数据,保存数据时使用setInteger而不是setObject

关于ios - 整数在初始化后变为0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30240825/

10-12 06:28