Swift: 为什么它更新的高分不正确?
Swift: why is it updating the highscore incorrectly?
我真的被困住了...感谢任何帮助!!
出于某种原因,高分在不应该更新的时候更新。例如,高分将是 9,然后在完成后,分数和高中将是,例如,5,而高分应该是 9。我认为这是因为当前分数没有与保存的高分进行比较,而是而不是将它与 var highscore = 0 中的值 0 进行比较。我知道正在保存高分,因为即使在应用程序关闭后它也会显示,所以我不明白为什么它不将保存的值与当前分数进行比较。
这是我的代码:
var toSend = Int()
var highScore = 0
override func viewDidLoad() {
super.viewDidLoad()
let highScoreDefault = NSUserDefaults.standardUserDefaults()
if toSend > highScore
{
highScore = toSend
highScoreDefault.setValue(highScore, forKey: "Highscore")
highScoreDefault.synchronize()
}
if highScoreDefault.valueForKey("Highscore") != nil {
highScore = highScoreDefault.valueForKey("Highscore") as! NSInteger!
}
score.text = "Your Score: \(toSend)"
highScorer.text = "Your High Score: \(highScore)"
// Do any additional setup after loading the view.
}
只需交换 "if" 语句并检查:
if highScoreDefault.valueForKey("Highscore") != nil {
highScore = highScoreDefault.valueForKey("Highscore") as! NSInteger!
}
if toSend > highScore
{
highScore = toSend
highScoreDefault.setValue(highScore, forKey: "Highscore")
highScoreDefault.synchronize()
}
我真的被困住了...感谢任何帮助!!
出于某种原因,高分在不应该更新的时候更新。例如,高分将是 9,然后在完成后,分数和高中将是,例如,5,而高分应该是 9。我认为这是因为当前分数没有与保存的高分进行比较,而是而不是将它与 var highscore = 0 中的值 0 进行比较。我知道正在保存高分,因为即使在应用程序关闭后它也会显示,所以我不明白为什么它不将保存的值与当前分数进行比较。
这是我的代码:
var toSend = Int()
var highScore = 0
override func viewDidLoad() {
super.viewDidLoad()
let highScoreDefault = NSUserDefaults.standardUserDefaults()
if toSend > highScore
{
highScore = toSend
highScoreDefault.setValue(highScore, forKey: "Highscore")
highScoreDefault.synchronize()
}
if highScoreDefault.valueForKey("Highscore") != nil {
highScore = highScoreDefault.valueForKey("Highscore") as! NSInteger!
}
score.text = "Your Score: \(toSend)"
highScorer.text = "Your High Score: \(highScore)"
// Do any additional setup after loading the view.
}
只需交换 "if" 语句并检查:
if highScoreDefault.valueForKey("Highscore") != nil {
highScore = highScoreDefault.valueForKey("Highscore") as! NSInteger!
}
if toSend > highScore
{
highScore = toSend
highScoreDefault.setValue(highScore, forKey: "Highscore")
highScoreDefault.synchronize()
}