はじめに##
ゲーム製作の中でスコアのランキングを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")
参考サイト##
NSUserDefaultを利用した中年データ永続保存 - Swiftサラリーマン
[Swift]【NSUserDefaultsの基本的な使い方】表示、格納、削除。
いつもありがとうございます。