この記事では、SwiftUIのデータの保存機能のひとるであるUserDefaultsの使い方について解説します。
IOSアプリでデータの保存をする方法は主に3種類です。
- UserDefaultsでデバイス内に値を保存する
- CoreDataでデバイス内のデータベースに値を保存する
- 外部サーバーのデータベースに値を保存し、API接続で値を利用する
今回解説するUserDefaultsは、他の値との関係性のないシンプルな値(例えばある設定のtrue or falseや、数字にカウント中の値など)の保存に利用する場面が多いです。
◆動作検証環境
・ローカル環境:mac Catalina
・XCode:12.1
・SwiftUI:2.0
・XCode:12.1
・SwiftUI:2.0
スポンサードリンク
UserDefaultsの基本的な使い方
データの保存は以下のコードで行います。
1 2 3 | UserDefaults.standard.set(保存する値, forKey: "キー名の指定") |
データの読み込みは以下のコードで行います。
1 2 3 | UserDefaults.standard.string(forKey: "キー名指定") |
上記はStringメソッドの例ですが、保存した値の種類に応じて読み込むデータを変更できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //Stringの読み込み UserDefaults.standard.string(forKey: "キー名指定") //Intの読み込み UserDefaults.standard.integer(forKey: "キー名指定") //Floatの読み込み UserDefaults.standard.float(forKey: "キー名指定") //Boolの読み込み UserDefaults.standard.bool(forKey: "キー名指定") //Objactの読み込み UserDefaults.standard.object(forKey: "キー名指定") //配列の読み込み UserDefaults.standard.array(forKey: "キー名指定") |
データの削除は以下のコードで行います。
1 2 3 | UserDefaults.standard.removeObject(forKey: "キー名指定") |
Date型の値の保存方法
Date型の値をUserDefaultsで利用する場合は、読み込み時にObjectのメソッドを利用します。
1 2 3 4 5 6 7 8 9 | var date = Date() userDefaults.standard.set(date, forkey: "keyDate") var myDate = UserDefaults.standard.object(forKey: "keyDate")! as! Date print(myDate) |
UserDefaultsの実践的な使い方
UserDefaultsの機能は、ライフライクルメソッドを組み合わせて利用する場面が多いです。
アプリがバックグラウンド状態では、コード内のデータは消えません。
アプリが再起動された時は、コード内で利用していたデータが消えますので、再起動前後の動作に対応するライフライクルメソッドでUserDefaultsを利用します。
ライフライクルメソッドでUserDefaultsを利用する方法は、こちらの記事を参考にしてください。
関連記事
この記事では、Buttonなどのアクションを利用せずにUserDefaultsで値を制御する方法を紹介します。 SwiftUIで従来から利用されているLife Cycle のUIKit App Delegate と[…]
以上、SwiftUIでのUserDefaultsの使い方について解説しました。