Swift中对象序列化的实现
发布时间:2020-12-14 06:32:40 所属栏目:百科 来源:网络整理
导读:Swift中对象序列化的实现 ??在swift中要使某个类可以序列化,只需要类实现NSCoding协议,并实现协议中的一个必要的构造函数和一个方法,分别对应序列化和反序列化的二个过程。 //提供一个解码器解码数据,通过解码数据来初始化类变量 required init?(coder a
Swift中对象序列化的实现??在swift中要使某个类可以序列化,只需要类实现NSCoding协议,并实现协议中的一个必要的构造函数和一个方法,分别对应序列化和反序列化的二个过程。 //提供一个解码器解码数据,通过解码数据来初始化类变量
required init?(coder aDecoder: NSCoder){ }
//提供一个编码器编码数据
func encodeWithCoder(aCoder: NSCoder){ }
示例: class AppParams{
var updateUrl: String? //
}
继承NSObject,实现NSCoding协议: class AppParams: NSObject,NSCoding{
...
}
//反序列化
required convenience init?(coder aDeCoder: NSCoder){
self.updateUrl = aDeCoder.decodeObject(forKey: "updateUrl") as? String
}
//序列化
func encode(with aCoder: NSCoder) {
aCoder.encode(updateUrl,forKey: "updateUrl")
}
保存和读取 //保存到user default中
let userDefault = UserDefaults.standard
let data = NSKeyedArchiver.archivedData(withRootObject: value as Any)
userDefault.setValue(data,forKey: Preferences.KEY_LAST_APP_PARAMS)
//从user default中读取
let userDefault = UserDefaults.standard
guard let data = userDefault.value(forKey: Preferences.KEY_LAST_APP_PARAMS) else{return nil}
return NSKeyedUnarchiver.unarchiveObject(with: data as! Data) as? AppParams (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |