1. 程式人生 > >Swift 4.0 Codable 序列化

Swift 4.0 Codable 序列化

如果要將一個物件持久化,需要把這個物件序列化。過去的做法是實現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)