2017-01-11 11 views
0

これは初心者向けの質問ですが謝罪しますが、解決策をオンラインで見つけることができません。私が見つけた助けのほとんどは私の問題を解決しなかったし、スウィフトの以前のバージョンのものでした。SwiftでUserDefaultsを設定する際の問題3

ゲーム内のプレーヤーの累積スコアを維持したいと考えています。初めてログインしたときは0になりますが、プレイするたびに、プレイしたラウンド数に応じて増加します。

私はいくつかの取り決めを試してみましたが、今私が持っている私AppDelegateファイルにしました:

UserDefaults.standard.set(Int(100),forKey:"TotalPoints") 

その後、GameSceneの他の部分、私が持っているプレーヤーの進歩に:

let defaults=UserDefaults.standard 
var CurrentExtras=defaults.integer(forKey: "TotalPoints") 
CurrentExtras = CurrentExtras+100 
UserDefaults.standard.set(Int(CurrentExtras),forKey:"TotalPoints") 

これはゲームの更新では機能しますが、一度アプリケーションを終了して再起動すると、初期値に戻ります。最初のデフォルトをチェックして、それが上書きされていないことを確認するにはどうすればよいですか?私はこれで正しいと思いますか?

答えて

2

AppDelegateのデフォルト値を設定する場合は、アプリが起動するたびにその値を100に戻します。

交換してみてください:

UserDefaults.standard.set(Int(100),forKey:"TotalPoints") 

へ:

if UserDefaults.standard.value(forKey: "TotalPoints") == nil { 
    UserDefaults.standard.set(100, forKey: "TotalPoints") 
} 

か:

UserDefaults.standard.register(defaults: ["TotalPoints" : 100]) 

それだけで100の鍵TotalPoints非常に最初の時間を設定しますその方法をアプリが起動。

+1

実際には、 'registerDefaults'を使用した元の回答がより良い解決策でした。 – rmaddy

関連する問題