プログラマー技術調査室

うだつのあがらないプログラマーが技術調査結果を掲載するブログです。

次回アプリ起動時に持ち越したいデータを手軽に保存する

iOSアプリ独自のデータ保存方法であるNSUserDefaultsを紹介します。

私を含めWindows系アプリケーション出身の開発者にとって、データ保存媒体はDBかファイルの2択ですよね。なので、この2つ以外の選択肢を想定せずに設計・開発を進めてしまうのではないでしょうか。

これは開発経験が長ければ長いほど、他の習得言語が多ければ多いほど、文献を斜め読みするために陥りがちな罠です。

swiftにはNSUserDefaultsという標準クラスがあり、これを利用すればDBやファイルを作成せずともデータの保存が可能となります。
サンプルコードは以下の通り。

// インスタンス生成
let userDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()

// キーを指定してデータを保存
userDefaults.setObject("保存情報", forKey: "KeyName")

// キーを指定してデータを取得
let getObject: AnyObject? = userDefaults.objectForKey("KeyName")
var getData: String

if getObject != nil {
    getData = String(getObject!)
}

// NSUserDefaultsの保存データを全削除
userDefaults.removePersistentDomainForName(NSBundle.mainBundle().bundleIdentifier!)

NSUserDefaultsでは暗黙的にXMLファイルを作成してデータIOを行っています。
メモリ上に保存している訳ではないので、端末を再起動してもデータはきちんと保存されています。

ただしXMLファイルの保存場所などは共通化されているようなのでセキュリティはゆるいです。

重要情報を扱うには不向きですが、アプリのコンフィグ情報等の保存にはうってつけですね。