2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[swift]UserDefaultsで構造体を保存する

Posted at

「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
              }
2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?