LoginSignup
0
2

More than 5 years have passed since last update.

SwiftでSwiftyUserDefaultsに色々なデータを入れる。

Posted at

はじめに

大したことではないのですが、よく忘れるのでメモ。

Archiver

class Archiver: NSObject {
    // 指定のデータをアーカイブします。
    static func encrypt(rootObject: Any) -> Data {
        return NSKeyedArchiver.archivedData(withRootObject: rootObject)
    }

    // アーカイブデータを解凍して返します。
    static func decrypt<T>(data:Data) -> T? {
        return NSKeyedUnarchiver.unarchiveObject(with: data) as? T
    }
}

SwiftyUserDefaultsにデータを入れる。

色々なデータを入れたいので以下のようなアクセッサを作る。

    static var createdAt:Hoge? {
        get {
            if let data = Defaults[.createdAt:Date] {
                return Archiver.decrypt(data: data)
            }
            return nil
        }
        set {
            if let newValue = newValue {
                Defaults[.createdAt:Date] = Archiver.encrypt(rootObject: newValue)
            } else {
                Defaults[.createdAt:Date] = nil
            }
        }
    }

これを使えば独自クラス(NSCoding実装済みクラス)でもSwiftyUserDefaultsに入れることができる。

0
2
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
0
2