初始化后整数变为0
Integer changes to 0 after init
我正在使用 NSUserDefaults (Whosebug link) 在 iOS Swift (Sprite Kit) 游戏中保存高分。
声明如下:
var savedScore: Int = NSUserDefaults.standardUserDefaults().objectForKey("hiScore") as! Int
这 returns 例如 '2' 作为高分。
如果高分被击败,我会这样做:
if self.score > self.savedScore {
NSUserDefaults.standardUserDefaults().setObject(self.score, forKey:"hiScore")
NSUserDefaults.standardUserDefaults().synchronize()
println("Synced")
}
但是,问题是self.savedScore
在初始值2
之后变成了0
,导致高分在每场比赛后都被保存,因为每一个可能的分数都更高比 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")
你应该使用 integerForKey 来获取数据,当你保存它时使用 setInteger 而不是 setObject
我正在使用 NSUserDefaults (Whosebug link) 在 iOS Swift (Sprite Kit) 游戏中保存高分。
声明如下:
var savedScore: Int = NSUserDefaults.standardUserDefaults().objectForKey("hiScore") as! Int
这 returns 例如 '2' 作为高分。
如果高分被击败,我会这样做:
if self.score > self.savedScore {
NSUserDefaults.standardUserDefaults().setObject(self.score, forKey:"hiScore")
NSUserDefaults.standardUserDefaults().synchronize()
println("Synced")
}
但是,问题是self.savedScore
在初始值2
之后变成了0
,导致高分在每场比赛后都被保存,因为每一个可能的分数都更高比 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")
你应该使用 integerForKey 来获取数据,当你保存它时使用 setInteger 而不是 setObject