使用UserDefaults在swift中保存高分

使用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(根据我可以从代码中推断)