如果要将一个对象持久化,需要把这个对象序列化。过去的做法是实现NSCoding协议,但实现NSCoding协议的代码写起来很繁琐,尤其是当属性非常多的时候。
Swift 4中引入了Codable协议,可以大大减轻了我们的工作量。我们只需要让需要序列化的对象符合Codable协议即可,不用再写任何其他的代码。
struct Language: Codable {
var name: String
var version:Int
}
1,Encode操作
我们可以直接把符合了Codable协议的对象encode成JSON或者PropertyList
let swift = Labguage(name:"Swift",version:4)
//encode对象
let encodedData = try JSONEncoder().encode(swift)
//从encoded对象获取String
let jsonString = String(data:encodedData,encoding: .utf8)
print(jsonString)
//打印结果为:
Optional("{\"name\":\"Swift\",\"version\":4}")
2,Decode操作
let decodedData = try JSONDecoder().decode(Language.self,from:encodeData)
print(decodedData.name,decodedData.version)