2017-12-14 4 views
0

私はゲームを開発して約2か月前にApp Storeにリリースしました(Supernatural Slayer)。ゲームはユーザーのデフォルトを使用して、レベル、XP、金などのプレーヤーデータを保存します。iOSアプリケーションのアップデートとユーザーのデフォルト

私は迅速にハッキングのヘルプに基づいてプログラムしたレビュー要求を含むようにゲームを更新します。 (私はまた、チャートの後押しが理由なく無期限にアカウントを一時停止したので広告ネットワークを切り替える必要がありました...)

私は約4-6ヶ月前に開発中に別の変数を追加するたびに覚えていますユーザーのデフォルト設定を保存して読み込むと、既存のゲームがクラッシュする可能性があります。ユーザーのデフォルト設定を消去するために、ゲームを削除して携帯電話に再ロードする必要があります。しかし、今私は同じエラーを引き起こしていないreviewRequest変数を追加している、私は正しくテストしていない場合、私はすべての私の選手を更新すると、彼らの進歩を失うだろうかわからない...

保存と読み込み機能のコードが下記のとおりです。これにより、reviewRequest変数とその保存と読み込みの行を追加すると、アプリを更新する既存のユーザーにエラーが発生しますか?私はMac OSとXcodeの両方を更新しました。なぜなら、それは私のためにクラッシュしていたからです。だから、もうこれは問題ではないのでしょうか?

let defaults = UserDefaults.standard 
var reviewRequest = 0 

func save() { 
    defaults.set(reviewRequest, forKey: "Review Request") 
    defaults.set(player.name, forKey: "PlayerName") 
} 

func load() { 
    player.name = defaults.object(forKey: "PlayerName") as! String 
    reviewRequest = defaults.integer(forKey: "Review Request") 
} 
+0

あなたはnilチェックを追加する必要があります。キーのデータを持たずにデフォルトを取得しようとすると、クラッシュします。 – Antoine

+0

さて、次のように追加します。ありがとうございます! reviewRequest他== nilの{ reviewRequest = 0 } {reviewRequest = defaults.integer(forKey: "レビューリクエスト")}場合 – Dominick

+0

は私の答え:) – Antoine

答えて

0

空のキーを取得しないようにするには、nilチェックを追加してください。

func load() { 

    if defaults.object(forKey: "PlayerName") != nil { 
     player.name = defaults.object(forKey: "PlayerName") as! String 
    } else { 
    //Default name or something similar 
    } 

    if defaults.object(forKey: "ReviewRequest") != nil { 
     reviewRequest = defaults.integer(forKey: "Review Request") 
     } else { 
     reviewRequest = 0 
     } 
    } 
関連する問題