Integer changes to 0 after init
我正在使用 NSUserDefaults(StackOverflow 链接)在 iOS Swift (Sprite Kit) 游戏中保存高分。
声明如下:
1 | var savedScore: Int = NSUserDefaults.standardUserDefaults().objectForKey("hiScore") as! Int |
这会返回例如 \\'2\\' 作为高分。
如果高分被击败,我会这样做:
1 2 3 4 5 6 | if self.score > self.savedScore { NSUserDefaults.standardUserDefaults().setObject(self.score, forKey:"hiScore") NSUserDefaults.standardUserDefaults().synchronize() println("Synced") } |
然而,问题是 如果这个问题需要,可以提供额外的代码。
谢谢!
您从 NSUserDefaults 获得分数并将其保存在新变量中:
1 | var savedScore: Int = NSUserDefaults.standardUserDefaults().objectForKey("hiScore") |
saveScore 是您每次调用此代码时创建的变量。
之后,您将分数与 self.savedScore 进行比较,后者不同于savedScore:
1 | if self.score > self.savedScore { ... } |
将获得保存分数的第一行替换为:
1 | self.savedScore: Int = NSUserDefaults.standardUserDefaults().integerForKey("hiScore") |
你应该使用 integerForKey 来获取数据,当你保存它时使用 setInteger 而不是 setObject