【问题标题】:Swift: why is it updating the highscore incorrectly?斯威夫特:为什么它会错误地更新高分?
【发布时间】:2016-09-08 03:52:37
【问题描述】:

我真的被困住了......感谢任何帮助!

由于某种原因,高分在不应该更新的时候更新。比如高分是9,然后完成后,分数和高中会是,例如,高分应该是9的时候是5。我认为这是因为当前分数没有与保存的高分进行比较,而是而是将其与 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.
}

【问题讨论】:

    标签: ios swift swift2 nsuserdefaults


    【解决方案1】:

    只需交换“if”语句并检查:

    if highScoreDefault.valueForKey("Highscore") != nil {
            highScore = highScoreDefault.valueForKey("Highscore") as! NSInteger!
        }
    
    if toSend > highScore
        {
            highScore = toSend
            highScoreDefault.setValue(highScore, forKey: "Highscore")
            highScoreDefault.synchronize()
        }
    

    【讨论】:

    • 耶!!!非常感谢!这让我发疯了,我不敢相信这是一个如此简单的修复 XD(我是编程新手,所以感谢你帮助我):)
    猜你喜欢
    • 2016-09-19
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2017-03-24
    • 1970-01-01
    相关资源
    最近更新 更多