【发布时间】:2015-01-04 09:26:29
【问题描述】:
我正在尝试制作高分视图。我将分数和高分加载并比较两者,看看是否应该将分数设置为新的高分。当分数为负数时,它工作正常,但当数字为正数但小于当前高分或大于高分时,它似乎将两个数字加在一起。它似乎也从两者中减去 1?我不太确定发生了什么。感谢您的帮助!
高分视图viewDidLoad(视图唯一代码):
override func viewDidLoad() {
//Load Score
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var score = defaults.valueForKey("Score")?.integerValue ?? 0
defaults.synchronize()
Score = score
//Load Highscore
let SecondDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var highscore = SecondDefaults.valueForKey("Highscore")?.integerValue ?? 0
SecondDefaults.synchronize()
Highscore = highscore
//Set Score Text
ScoreString = String(Score)
Scorelabel.text = ScoreString
//Update Highscore if Score is bigger
if Score > Highscore {
//Set Highscore to Score
Highscore += Score
//Save Highscore
let SecondDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
SecondDefaults.setObject(Highscore, forKey: "Highscore")
SecondDefaults.synchronize()
//Set Highscore Text
HighscoreString = String(Highscore)
HighscoreLabel.text = HighscoreString
NewHighscoreLabel.text = "New Highscore"
}
//Set Highscore Text if Score is smaller
else if Highscore >= Score {
HighscoreString = String(Highscore)
HighscoreLabel.text = HighscoreString
}
}}
【问题讨论】:
-
它不会修复错误(尽管它可能导致它)但您应该始终坚持
lowercaseVariableNames,而不是混合和匹配(您是否使用UppercaseVariableNames作为成员变量?)。这里有一个名为Score的变量和另一个名为score的变量。这是自找麻烦。 Swift 的标准是命名类型以大写开头,变量以小写开头。因为你不能给类型赋值,所以你不能不小心把一个变量的类名打错了,但是你可以把一个变量打错另一个。
标签: ios swift nsuserdefaults