0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SwiftUI】UserDefaultsを使ってデータ型のデータを保存する

Last updated at Posted at 2025-02-25

はじめに

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形式に変換し保存することも可能。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?