Edited at

UserDefaultsの概要と操作方法(Swift)


「UserDefaults」とは?

ユーザーのデフォルトデータベースへのインターフェイスです。

アプリの起動時にキーと値のペアを永続的に保存します。

一言でいうと「簡単に使えるキーバリュー型のDB」です。


UserDefaultsを使う目的

アプリ起動時にデフォルトの状態や動作方法を決定するために使います。

キーと値のペアを簡単に永続化できるため、ちょっとした設定の保存などに向いています。


UserDefaultsの使用例


  • ユーザーが好みの測定単位を指定する(cmやmなど)

  • ユーザーがメディアの初期再生速度を指定する


環境


  • Swift:4.2.1

  • Xcode:10.1 (10B61)


CRUD操作

キーは文字列である必要があります。


追加・更新

追加と更新は同じメソッドを使います。

値に応じたオーバーロードメソッドが呼ばれます。

UserDefaults.standard.set({}, forKey: {キー})


取得

追加・更新時と異なり、オーバーロードメソッドがないため、値によってメソッドを呼び分ける必要があります。

UserDefaults.standard.string(forKey: {キー})

UserDefaults.standard.array(forKey: {キー})
UserDefaults.standard.dictionary(forKey: {キー})
UserDefaults.standard.data(forKey: {キー})
UserDefaults.standard.stringArray(forKey: {キー})
UserDefaults.standard.integer(forKey: {キー})
UserDefaults.standard.float(forKey: {キー})
UserDefaults.standard.double(forKey: {キー})
UserDefaults.standard.bool(forKey: {キー})
UserDefaults.standard.url(forKey: {キー})


削除

削除は値によってメソッドを呼び分ける必要がありません。

UserDefaults.standard.removeObject(forKey: {キー})


おわりに

iOSアプリではキーバリュー型のDBが非常に簡単に使えることがわかりました。

保存先をinfo.plistやRealmに変更しても動作するように、プロトコルを定義して使うとさらにいいです。

その方がテストもしやすいです。


参考リンク