💾
SwiftUI 構造体をUserDefaultsに保存する。
やること
Struct構造体をUserdefaultsに保存する。
筆者の開発環境
Mac os Sonoma 14.3.1
Xcode 15.3
Userdefaultsとは?
Userdefaultsはキーと値のペアを永続的に保存します。
作成した構造体をそのまま保存はできない
自分はTodoListアプリを作成していたときなんですが自作した以下の構造体をそのまま
Userdefaultsに保存しようとしてました。
import Foundation
struct TodoModel: Codable, Identifiable {
var id = UUID()
var Tag: String
var Title: String
var Details: String
var Check: Bool
}
ですが、これでは保存できません。
構造体をUserdefaultsに保存する
保存するためにはData型に変換してから保存しないといけません。
保存
if let encodedData = try? JSONEncoder().encode(TodoList) {
UserDefaults.standard.set(encodedData, forKey: "TodoList_Key")
}
呼び出し
取得する場合は、UserDefaultsからData型として取得し、自作した構造体に変換し直せば良いです。
if let todosData = UserDefaults.standard.data(forKey: "TodoList_Key"),
let decodedTodos = try? JSONDecoder().decode([TodoModel].self, from: todosData) {
TodoList = decodedTodos
}
参考記事
最後まで読んでいただきありがとうございました。
Discussion