こんにちは〜株式会社メモリアインクの福嶋です!
記事をご覧いただきありがとうございます!
今回は、SwiftでUserDefaultsを効率的に活用する方法を初心者向けに段階的に解説していきます。
この記事を読んで分かること…
・UserDefaultsとは
・UserDefaultsの使い方(データの保存/データの読み出し/データの削除)
・カスタムオブジェクト(特定の目的や機能を持たせるために定義したオブジェクト)の保存方法
・UserDefaultsが適さない場面
UserDefaultsとは?
UserDefaults(ユーザーデフォルト)は、キー値ペアの形式でデータを保存することができる、iOSアプリケーション開発で利用されるシステムです。主に、ユーザーの設定や軽量なデータ保存に使用されます。
非常に簡単に利用できるため、Swift開発者にとって最初のデータ永続化(データをアプリの再起動後も残すこと)の選択肢となります。
UserDefaultsの基本的な使い方
データの保存
UserDefaultsでデータを保存するには、まずUserDefaultsのインスタンスにアクセスし、適切なメソッドを呼び出してデータを保存します。
UserDefaults.standard.set(25, forKey: "Age")
UserDefaults.standard.set(true, forKey: "IsFirstLaunch")
UserDefaults.standard.set("John Doe", forKey: "UserName")
このコードは、年齢(Int)、最初の起動かどうか(Bool)、ユーザー名(String)をUserDefaultsに保存しています。set(_:forKey:)
メソッドを使用してデータを保存し、それぞれのデータ型に応じた値を設定します。
データの読み出し
保存したデータを読み出すには、保存時に使用したキーを指定して、UserDefaultsから値を取得します。
let age = UserDefaults.standard.integer(forKey: "Age")
let isFirstLaunch = UserDefaults.standard.bool(forKey: "IsFirstLaunch")
let userName = UserDefaults.standard.string(forKey: "UserName") ?? "Guest"
print(age)
print(isFirstLaunch)
print(userName)
各メソッド(integer(forKey:)
、bool(forKey:)
、string(forKey:)
)は、指定したキーに対応するデータ型の値を返します。値が存在しない場合のデフォルト値も設定できます(string(forKey:)
の場合はnil
が返されるため、nil
合体演算子??
を使用してデフォルト値を”Guest”に設定しています)。
出力結果:
25
true
John Doe
データの削除
UserDefaultsからデータを削除するには、removeObject(forKey:)
メソッドを使用します。
UserDefaults.standard.removeObject(forKey: "UserName")
let userName = UserDefaults.standard.string(forKey: "UserName") ?? "Guest"
print(userName)
このコードは、UserDefaultsから”UserName”キーに関連付けられたデータを削除します。
出力結果:
Guest
UserDefaultsを使った高度なテクニック
カスタムオブジェクトの保存
UserDefaultsでカスタムオブジェクトを保存するには、オブジェクトをData
型にエンコードし、それをUserDefaultsに保存する必要があります。このプロセスにはCodable
プロトコルが役立ちます。
struct User: Codable {
var name: String
var age: Int
}
let user = User(name: "John Doe", age: 30)
let encoder = JSONEncoder()
if let encoded = try? encoder.encode(user) {
UserDefaults.standard.set(encoded, forKey: "UserData")
}
if let savedUserData = UserDefaults.standard.data(forKey: "UserData") {
let decoder = JSONDecoder()
do {
let user = try decoder.decode(User.self, from: savedUserData)
print("ユーザー名: \(user.name), 年齢: \(user.age)")
} catch {
print("デコードに失敗しました。", error)
}
}
この例では、User
構造体を定義し、それをJSONにエンコードしてからUserDefaultsに保存しています。エンコードにはJSONEncoder
を使用しています。
UserDefaultsからカスタムオブジェクトを取り出すには、保存したデータをData
型で取得し、JSONデコーダーを使用して元のオブジェクト型にデコードします。
出力結果:
ユーザー名: John Doe, 年齢: 30
UserDefaultsのセキュリティ対策
UserDefaultsは平文でデータを保存するため、機密性の高い情報の保存には適していません。機密情報を保存する必要がある場合は、Keychainなどのよりセキュアなストレージソリューションを検討する必要があります。
まとめ
UserDefaultsは、Swiftでの軽量なデータ保存に非常に便利なツールですが、使用する際にはその特性と制限を理解しておくことが重要です。この記事が、SwiftにおけるUserDefaultsの効果的な使用方法についての理解を深めるのに役立てれば幸いです!
この記事があなたのスキルアップに役立ったなら、次のキャリアステップを踏み出す絶好の機会かもしれません。エンジニアとしてのさらなる成長と挑戦を求めるなら、
未経験からIT・Webエンジニアを目指すなら【ユニゾンキャリア】
コメント
コメント一覧 (1件)
[…] […]