Posted at

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

More than 1 year has passed since last update.


はじめに

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


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に入れることができる。