ホーム » Swift » 【Swift】 UserDefaultsへのデータの保存・読み出し方法(Classの保存方法も説明)

【Swift】 UserDefaultsへのデータの保存・読み出し方法(Classの保存方法も説明)

【Swift】 UserDefaultsへのデータの保存・読み出し方法(Classの保存方法も説明) Swift

はじめに

様々な形でのUserDefaultsへのデータの保存方法に関して説明します。

仕組み

UserDefaultsのデータは全てkey:value形式で保存されるようになっています。

そのためkeyを指定して保存、該当データを読み出したいときはkeyを指定して読み出しをします

保存と読み出し:Intの場合の例

保存

//インスタンス取得
let defaults = UserDefaults.standard
//key"Age"でUserDefaultに保存
defaults.set(25, forKey: "Age")

読み出し

//インスタンス取得
let defaults = UserDefaults.standard
//key"Age"でUserDefaultから取得
let age = defaults.integer(forKey: "Age")

UserDefaultsに保存できる型

何が保存できるかは決まっています。

①boolean、integer、float、double、string、array、dictionary、Data

②データ型がクラスの場合NSCodeingに準拠しているクラス(CodableでOK)

また、配列またはディクショナリの場合、全てのkeyとvalueが①②に適合している必要があります。

クラスのインスタンスを保存する場合

Codableに準拠したクラスを作成します。

class Person: NSObject,Codable {
    var name:String
    var age:String
    
    init(name: String, age: String) {
        self.name = name
        self.age = age
    }
}

保存

Data型で保存する必要があるため一度JSONEncoderでData型に変換し保存します。

var person = Person(name: "nona", age: "15")

func save(){
        let jsonEncoder = JSONEncoder()
        if let saveData = try? jsonEncoder.encode(person){
            let defaults = UserDefaults.standard
            defaults.set(saveData, forKey: "person")
        }else{
            print("Failed to save person")
        }
    }

読み出し

保存の逆でData型で読み出したものをdecodeして元のインスタンスに戻しています。

func load(){
        var loadPerson:Person?
        let defaults = UserDefaults.standard
        if let savedPerson = defaults.object(forKey: "person") as? Data{
            let jsonDecoder = JSONDecoder()
            
            do{
                loadPerson = try jsonDecoder.decode(Person.self, from: savedPerson)
                //デバッグ用に出力しています
                print("Name:\(loadPerson?.name),\(loadPerson?.age)")
            }catch{
                print("Failed to load people")
            }
        }
        
    }

注意点

UserDefaultsはアプリ実行時にデータが読み込まれるので非常に簡単に使用できますが、アプリの読み込みが遅くなるため大量のデータを保存する場合は他の保存方法を検討すべきです。

まとめ

・UserDefaultsで簡単にデータの読み書きが可能になる

・データがアプリ実行時に読み込まれるので大量のデータには不向き

iOS開発のおすすめ書籍

あの実装方法どうだったっけ?を解決してくれます。swiftの文法から部品、ネットワーク、各種センサーなど端末機能の使い方まで対応しており、あると便利な一冊です。

Swiftの勉強をするならUdemyがおすすめ!

私はUdemyでSwiftの勉強をしてアプリを自作して公開出来るようになりました。

特に以下のコースは基礎的なUIKitの使い方からAR、機械学習(CoreML)までiOSの機能を網羅しており、図解が豊富なハンズオン形式なのでアプリを作りながら楽しく学べます。

2022/12/27時点で評価数80000越えのSwiftのトップコースです。

iOS & Swift – The Complete iOS App Development Bootcamp icon
https://www.udemy.com/courses/search/?src=ukw&q=swift

初回は大幅な割引があったり、Udemyは定期的な割引もしていますので良ければ是非。

なお上記は英語のコースになりますが日本語字幕に対応しています。一応以下で英語コースの勉強方法(日本語化)を記載しています。ご参考にどうぞ。

もしご参考になりましたら下部にある役に立ったボタン、TwitterなどSNSへの投稿をしていただけると励みになります

コメント

タイトルとURLをコピーしました