使用UserDefaults在swift中保存高分
问题描述:
我试图获得高分以保存每次播放器退出应用程序,但我努力让它工作,我很困惑我在哪里“M犯了一个错误使用UserDefaults在swift中保存高分
var gameSettings = Settings.sharedInstance
let HIGHSCORE = "HIGHSCORE"
if gameSettings.highScore < score{
gameSettings.highScore = score
UserDefaults.standard.set(gameSettings.highScore, forKey: HIGHSCORE)
}
if gameSettings.highScore >= score{
gameSettings.score = score
}
let gameOverHighScore = SKLabelNode()
gameOverHighScore.name = "gameOverHighScore"
gameOverHighScore.fontName = "Helvetica Neue UltraLight"
if let HIGHSCORE = UserDefaults.standard.value(forKey: HIGHSCORE) {
gameOverHighScore.text = "HIGHSCORE : \(HIGHSCORE)M"
}
gameOverHighScore.fontColor = SKColor.white
gameOverHighScore.position = CGPoint(x: 0, y: -175)
gameOverHighScore.fontSize = 70
gameOverHighScore.zPosition = 52
addChild(gameOverHighScore)
答
在if let HIGHSCORE = UserDefaults.standard.value(forKey: HIGHSCORE) { gameOverHighScore.text = "HIGHSCORE : \(HIGHSCORE)M" }
你正在尝试通过关键高分发现UserDefaults值不,而是通过ANY类型的新值HIGHSCORE。如果你要修复它,你可以这样做:
if let HIGHSCORE = UserDefaults.standard.value(forKey: self. self.HIGHSCORE) as! Int { gameOverHighScore.text = "HIGHSCORE : \(HIGHSCORE)M" }
,或者你可以解开与另一名新价值的价值。并且不要忘记将值转换为合适的类型或使用
UserDefaults.standard.integer(forKey: self.HIGHSCORE)
答
这里是如何做到这一点简单的例子:
let firebaseId = user.uid // Variable we want to save
UserDefaults.standard.set(firebase, forKey: "firebase") // Saving the variable with key "firebase"
现在检索:
if let firebaseId = UserDefaults.standard.string(forKey: "firebase") {
print("Firebase ID: \(firebase)")
}
在你的代码,您检索到的高分,并且你应该检索到类似gameSettings.highScore(根据我可以从代码中推断)