保存高分

时间:2017-03-28 00:16:20

标签: ios swift

我在这里看到了不少线程问这个,我已经关注了几个,似乎无法在应用程序被杀死并重新打开后保存。至于从游戏到游戏的工作(不杀死应用程序),它可以适当地保存。

以下是我的高分变量的实例。我遗漏了一些造型,并在那里展示了高分。我觉得这是宣言的内容吗?

//delarations
var highScore = Int()
var highScoreLabel = UILabel()

//post game
if score > highScore {
   saveHighScore()
   scoreIsHigher = true
   }

//and the function
func saveHighScore() {
    let highScoreData = UserDefaults.standard
    highScore = score
    highScoreData.setValue(highScore, forKey: "highScore")
}

编辑: 我在赛前状态中缺少这部分代码,这似乎是触发加载数据的原因。

let highScoreData = UserDefaults.standard
if (highScoreData.object(forKey: "highScore") != nil) {
        highScore = highScoreData.value(forKey: "highScore") as! NSInteger!
    }

2 个答案:

答案 0 :(得分:0)

使用set(_:forKey:),而不是设置setValue(_:forKey:)

setValue(_:forKey:)是一种KVO方法,不是保存到UserDefaults的方法。

您需要在用户获得新的高分后立即将高分更新为UserDefaults,并在启动时从UserDefaults中将其读取。

答案 1 :(得分:0)

UserDefaults.standard.set(highscore, forKey: "highscore")

使用.set(_,forKey :)方法可以解决您的问题。