「UserDefaults」とは?
ユーザーのデフォルトデータベースへのインターフェイスです。
アプリの起動時にキーと値のペアを永続的に保存します。
一言でいうと「簡単に使えるキーバリュー型のDB」です。
自作した構造体はそのまま保存できない
おそらく下記のような構造体を自作して保存したい場面が多いかと思います。
DataModel.swift
import Foundation
struct DataModel: Codable {
let name: String?
let age:Int?
let birthday: String?
}
使用方法
保存
Data型に変換してから保存します。
ViewController.swift
let dataModel = DataModel(name: name, age: age, birthday: birthday)
let jsonEncoder = JSONEncoder()
jsonEncoder.keyEncodingStrategy = .convertToSnakeCase
guard let data = try? jsonEncoder.encode(dataModel) else {
return
}
UserDefaults.standard.set(data, forKey: "key")
呼び出し
取得する場合は、UserDefaultsから Data型として取得し、自作した構造体に変換し直せば良いです。
ViewController.swift
let jsonDecoder = JSONDecoder()
jsonDecoder.keyDecodingStrategy = .convertFromSnakeCase
guard let data = UserDefaults.standard.data(forKey: "key"),
let dataModel = try? jsonDecoder.decode(DataModel.self, from: data) else {
return
}