2017-03-28 8 views
1

私はここでこれを尋ねるかなりのスレッドを見てきました。私はいくつかをたどってきて、アプリが殺されて再び開かれた後にこれを保存するようには見えません。ゲームからゲームまで(アプリを殺さずに)、それは適切に保存されます。最高得点を保存

ここに私の最高値変数のインスタンスがあります。私はスタイリングのいくつかを省いて、私はハイスコアを表示します。私はそれが宣言で何かだと感じていますか?

//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! 
    } 
+0

ここでの質問は何ですか?正確にあなたが答えとして何を求めているのか、より具体的になりますか? –

+0

あなたはどこでハイスコアを読み込みますか? – NobodyNada

+0

「saveHighScore」はいつ呼びますか?なぜ 'save(forKey:)'の代わりに 'saveValue(forKey:)'を間違って使うのですか?不必要にKVCを使用しないでください。 – rmaddy

答えて

0

使用set(_:forKey:)setValue(_:forKey:)

を設定されていません。

setValue(_:forKey:)はKVOメソッドであり、UserDefaultsに保存する方法ではありません。

新しいスコアが高いとすぐに最高スコアをUserDefaultsに更新し、起動時にUserDefaultsから読み取る必要があります。

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

.set(_、forKey:)メソッドを使用すると、問題が解決するはずです。

関連する問題