はじめに
SwiftUIにおいて、簡単なデータを保存できるUserDefaultsについて学習したので、備忘録としてまとめます。
ここではUserDefaultsの基本的な使い方(データ型の保存)と、データを保存する簡単なアプリを例に説明します。
環境
【Xcode】16.2
【iOS】18.2
【macOS】Sequoia 15.3.1
UserDefaultsとは
UserDefaults は、iOSアプリにおいてデータを永続化(アプリを閉じてもデータが消えないように保存)するための仕組みです。
✅ UserDefaultsで保存できるデータ型
UserDefaultsには以下のようなデータ型を保存できます。
・Bool(真偽値)
・Int(整数)
・Float(浮動小数点数)
・Double(倍精度浮動小数点数)
・String(文字列)
・Data(バイナリデータ)
・Array(配列)
・Dictionary(辞書)
※ 複雑なデータ型(独自の構造体など)を保存する場合は、Codableプロトコルを使ってJSON形式に変換する必要があります。
UserDefaultsを使った簡単なアプリを作成
ここでは、スコアを保存・リセットできるシンプルなアプリを作成します。
アプリの仕様
「スコア +1」ボタンを押すとスコアが増加し、UserDefaultsに保存
「リセット」ボタンでスコアを0にし、UserDefaultsからデータを削除
アプリを再起動しても、保存されたスコアが保持される
import SwiftUI
struct ContentView: View {
// UserDefaultsから保存したデータを読み込む
@State private var score: Int = UserDefaults.standard.integer(forKey: "highScore")
var body: some View {
VStack {
Text("スコア: \(score)")
.font(.largeTitle)
.padding()
HStack {
// スコアを増加し、UserDefaultsに保存
Button {
score += 1
UserDefaults.standard.set(score, forKey: "highScore")
} label: {
Text("スコア +1")
.padding()
.background(Color.blue)
.foregroundStyle(.white)
.cornerRadius(10)
}
// スコアをリセットし、UserDefaultsから削除
Button {
score = 0
UserDefaults.standard.removeObject(forKey: "highScore")
} label: {
Text("リセット")
.padding()
.background(Color.red)
.foregroundStyle(.white)
.cornerRadius(10)
}
}
.padding()
}
}
}
1. スコアの保存
UserDefaults.standard.set(score, forKey: "highScore")
set(_:forKey:) メソッドでデータをUserDefaultsに保存。
キー("highScore")を指定することでデータを管理。
2. スコアのリセット
UserDefaults.standard.removeObject(forKey: "highScore")
removeObject(forKey:) メソッドでデータを削除。
キー("highScore")に対応するデータ(score)が削除される。
まとめ
UserDefaults は小規模なデータ(設定、スコア、フラグなど)を簡単に保存できる。
set(_:forKey:) でデータ保存、removeObject(forKey:) でデータ削除。
複雑なデータはJSON形式に変換し保存することも可能。