Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Swift辞典

UserDefaults

Swiftの『UserDefaults』は、アプリの設定や小さなデータを永続的に保存するための仕組みです。再起動後もデータが保持されます。

メソッド一覧
メソッド / プロパティ概要
UserDefaults.standardデフォルトのデータベースへのアクセスを提供します。
set(_:forKey:)値を指定したキーで保存します。Bool, Int, Double, String, Data 等に対応します。
object(forKey:)指定したキーの値を Any? として返します。
string(forKey:)指定したキーの値を String? として返します。
integer(forKey:)指定したキーの値を Int として返します。
bool(forKey:)指定したキーの値を Bool として返します。
removeObject(forKey:)指定したキーの値を削除します。
synchronize()変更をディスクに強制書き込みします(通常は不要)。
サンプルコード
import Foundation

let defaults = UserDefaults.standard

// 各種型の保存
defaults.set("Alice", forKey: "userName")
defaults.set(25, forKey: "userAge")
defaults.set(true, forKey: "isLoggedIn")
defaults.set(3.14, forKey: "score")

// 読み込み
let name = defaults.string(forKey: "userName") ?? "未設定"
let age  = defaults.integer(forKey: "userAge")
let isLoggedIn = defaults.bool(forKey: "isLoggedIn")

print("名前: \(name)")
print("年齢: \(age)")
print("ログイン済み: \(isLoggedIn)")

// 存在しないキーのデフォルト値
let score = defaults.double(forKey: "score")  // 0.0 が返る(デフォルト)
print("スコア: \(score)")

// 配列・辞書の保存
let languages = ["Swift", "Kotlin", "Rust"]
defaults.set(languages, forKey: "languages")

if let langs = defaults.array(forKey: "languages") as? [String] {
    print("言語: \(langs)")
}

// Codable な型の保存(Data に変換)
struct AppSettings: Codable {
    var theme: String
    var fontSize: Int
}

let settings = AppSettings(theme: "dark", fontSize: 16)
if let data = try? JSONEncoder().encode(settings) {
    defaults.set(data, forKey: "appSettings")
}

if let data = defaults.data(forKey: "appSettings"),
   let loaded = try? JSONDecoder().decode(AppSettings.self, from: data) {
    print("テーマ: \(loaded.theme), フォントサイズ: \(loaded.fontSize)")
}

// 削除
defaults.removeObject(forKey: "userAge")
print("削除後: \(defaults.object(forKey: "userAge") as Any)")
概要

『UserDefaults』は設定フラグ・ユーザー名・最終起動日時など、小さなデータの永続化に適しています。plist 形式でディスクに保存されます。

UserDefaults に対応していない型(カスタム struct や class)を保存する場合は、『Codable』で Data に変換してから保存します。UserDefaults は大量のデータや機密情報(パスワード・認証トークン等)の保存には適しません。機密情報には Keychain を使ってください。

FileManager によるファイル保存についてはFileManagerを参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。