2016-09-08 2 views
0

Я действительно застрял ... любая помощь приветствуется!Swift: почему он неправильно обновляет рекорды?

По какой-то причине высокий балл обновляется, когда этого не должно быть. Например, рекорду будет 9, а затем после окончания, оценка и highschool будут, например, 5, когда рекорду должно было быть 9. Я думаю, это потому, что текущий счет не сравнивается с сохраненным рекордом и вместо этого сравнивая его со значением 0 в var highscore = 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. 
} 

ответ

2

Просто поменять "если" заявления и проверить:

if highScoreDefault.valueForKey("Highscore") != nil { 
     highScore = highScoreDefault.valueForKey("Highscore") as! NSInteger! 
    } 

if toSend > highScore 
    { 
     highScore = toSend 
     highScoreDefault.setValue(highScore, forKey: "Highscore") 
     highScoreDefault.synchronize() 
    } 
+0

YAY !!! Спасибо огромное! Это заставило меня сходить с ума, и я не могу поверить, что это было простое исправление XD (я новичок в программировании, поэтому спасибо, что помог мне) :) – Mia

+0

Добро пожаловать ......... – KSR

Смежные вопросы