質問: 今自分が考えているのはゲームでステージ1−1、1−2・・・と沢山あって1−1をクリアすると1−2が解放されるといったよくあるシステムです。 1−1をクリアして1−2を解放した後アプリのタスクを切ると初期化されてしまいまた1−1からスタートしてしまいます。 どのようにしたらタスクを切ったところから始めることができますか? サーバーなどを使わないとできませんか? もし、使わなくて済むならその方法を教えてください。 コードを簡単に書いていただけると助かります。 説明が下手で申し訳有りません。 ご回答宜しくお願いします
回答: サーバー上でユーザのクリア進捗状況を保持しないのであれば、端末内部に保存する方法を取ることができます。 ステージ数のみ保存する形で良いのであれば、 `NSUserDefaults`が手軽に使えて良いのではないかなと思います。 【ソースコード例】 ユーザが **1-2** までステージをクリアしている場合 仮で、1をmajorStageNumber, 2をminorStageNumberとします。 ``` // 値の保存方法 let defaults = NSUserDefaults.standardUserDefaults() defaults.setInteger(1, forKey: "majorStageNumber") defaults.setInteger(2, forKey: "minorStageNumber") defaults.synchronize() // 値の取得方法 let majorStageNumber = defaults.integerForKey("major") let minor:Int = defaults.integerForKey("minorStageNumber") ``` 上記の書き方を踏まえて、 * ステージをクリアするごとにステージ数を端末内部に保存する * アプリを起動する度に、端末内部からクリアしたステージ数を取得する ようにしてみたらいかがでしょうか? もし、 * ステージごとのクリア点数(経験値)やコインも保存したい * 1つの端末で複数ユーザでゲームをプレイしたい 3ゲームまでセーブできるといった機能をつけたいといった場合ですかね。 などの想定があるのであれば、`Realm`を使った方が良いと思います。 `Realm`について、参考までに公式サイトのリンクをはっておきます。 少しでも参考になれば幸いです。