LoginSignup
8
12

More than 3 years have passed since last update.

Swift 3でUserDefaultsに保存したりしたオブジェクトをデシリアライズする

Last updated at Posted at 2017-02-09

オブジェクトをUserDefaultsに保存したくなりました。

Swiftでは、UserDefaultsに保存できるオブジェクトはプリミティブな幾つかのものに限られていますが、
それ以外のオブジェクトでも、Dataに変換することでUserDefaultsに保存することができます。

これを実現するために、UserDefaultsにとっておきたいクラスでシリアライズとデシリアライズをサポートする必要があります。

Swift 3で使えそうな例を載せておきます。

注意

もし 複雑なデータを永続化しようとしている なら Realm を検討するべきだと思います。認証用の文字列とかなら https://github.com/kishikawakatsumi/KeychainAccess がよいです。

コード

Class

Swift
class Hoge: NSObject, NSCoding {
    var name = ""
    var hoge = ""
    var fuga = ""
}

Deserialize

Swift
required init(coder aDecoder: NSCoder) {
    self.name = aDecoder.decodeObject(forKey: "name") as! String
    self.hoge = aDecoder.decodeObject(forKey: "hoge") as! String
    self.fuga = aDecoder.decodeObject(forKey: "fuga") as! String
}

Serialize

Swift
func encode(with aCoder: NSCoder) {
    aCoder.encode(self.name, forKey: "name")
    aCoder.encode(self.hoge, forKey: "hoge")
    aCoder.encode(self.fuga, forKey: "fuga")
}

参考

8
12
2

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
8
12