ekCraft's blogs

SE転向を目指すサンデープログラマーの備忘録

【Swift】NSUserDefaultsでデータを保存する

ゲーム製作の中でスコアのランキングをInt型の配列で作ったのですが、そのままではアプリを終了すると(当然ですが)消えてしまいます。再度アプリを立ち上げた時、前回のスコアランキングが保持されている仕様にしたく、例によってネットで色々と調べまわり、NSUserDefaultsを使ってデータを保存するという方法をとりました。また、その中で参考サイトのサンプルプログラム通りにプログラムしてもうまくいかなかった部分(特に下記手順4)は、エラーが出ず、期待した振る舞いをしてくれるところまでなんとか手探りで修正しました。

もっと良い書き方をご存知でしたら、是非教えて頂きたいです。

環境


Swift 2
Xcode 7.2

手順


  1. 保存するデータをつくる。

    var scores = [0,0,0,0,0,0]

    ※今回はInt型、6要素の配列としました。

  2. 利用するクラスの中でNSUserDefaultsのインスタンスをつくる。

    let ud = NSUserDefaults.standardUserDefaults()

  3. データを書き込みたい場所に以下のコードを書く。

    ud.setObject(scores, forKey: "scoresKey")
    ud.synchronize()

  4. データを読み込みたい場所に以下のコードを書く。

    if ud.objectForKey("scoresKey") != nil {
    scores = ud.objectForKey("scoresKey") as! [Int]
    }

  5. 保存されたデータを削除したい場所に以下のコードを書く。

    ud.removeObjectForKey("scoresKey")

参考サイト


swift-salaryman.com

qiita.com

いつもありがとうございます。