これはIMPL Advent Calendar 2022の22日目(1日遅刻)のエントリです。
インプルの知花です。
今回は、アプリを触っている際にアプリを停止しても残ってしまっているデータの原因がUserDefalutsによるものだったためその使い方と注意点についてまとめました。
UserDefaultsとは?
公式ドキュメントより、「UserDefaultsはユーザのデフォルトデータベースへのインターフェースで、
アプリを起動するたびにキーバリューペアを持続的に保存するもの」と書いてあります。
つまり、「UserDefaults」とはアプリ内に生成されるデフォルトのデータベースにアクセスするためのインターフェース(アクセス手法)の一つであり、<key, Value>形式の辞書型でデータを持続的に保持し、アプリが停止してもデータを保持することが可能とゆうことです。
UserDefaultsの使い方
・データの登録・更新
UserDefaults.standard.set(保存する値, forKey: "キー名指定")
・データの取得
保存した値の種類に応じて読み込むデータを変更できます。
// Stringの取得
UserDefaults.standard.string(forKey: "キー名指定")
// Intの取得
UserDefaults.standard.integer(forKey: "キー名指定")
// Floatの取得
UserDefaults.standard.float(forKey: "キー名指定")
// Doubleの取得
UserDefaults.standard.double(forKey: "キー名指定")
// Urlの取得
UserDefaults.standard.url(forKey: "キー名指定")
// 配列の取得
UserDefaults.standard.array(forKey: "キー名指定")
// 辞書オブジェクトの取得
UserDefaults.standard.dictionary(forKey: "キー名指定")
// データオブジェクトの取得
UserDefaults.standard.data(forKey: "キー名指定")
// オブジェクトの取得
UserDefaults.standard.object(forKey: "キー名指定")
Date型の場合は、Objectメソッドを使用します。
var date = Date()
// dateの登録
UserDefaults.standard.set(date, forKey: "key_date")
// dateの取得
var selectDate = UserDefaults.standard.object(forKey: "key_date")
・データの削除
UserDefaults.standard.removeObject(forKey: "キー名指定")
UserDefaultsの実践的な使い方と注意点
「UserDefaults」は、ライフサイクルと組み合わせてシンプルな値の保存で使用する場合が多く、
大量データの保存目的としては、アプリのパフォーマンスが著しく低下する可能性がある為、おすすめされません。
また、アプリを削除しない限りデータが残り続けるので削除設定も忘れないようにしましょう。
参考サイト
・https://developer.apple.com/documentation/foundation/userdefaults
・https://tech.amefure.com/swift-userdefaults