Swift4的Codable探究

在Swift4中,编码和解码引入了Encodable和Decodable这两个协议,而Codable是Encodable和Decodable的集合。在Swift中,Enum、Struct和Class都支持Codable。

一个简单的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
enum Gender:String, Codable {
case Male = "Male"
case Female = "Female"
}
class User: Codable {
let name : String
let age: Int
let gender: Gender
init(name: String, age: Int, gender: Gender) {
(self.name, self.age, self.gender) = (name, age, gender)
}
}
let userJsonString = """
{
"name": "Cook",
"age" : 58,
"gender": "Male"
}
"""

if let userJsonData = userJsonString.data(using: .utf8){
let userDecode = try? JSONDecoder().decode(User.self, from: userJsonData)
print(userDecode!)
}
let userEncode = User(name: "Cook", age: 58, gender: Gender.Male)
let userEncodeData = try? JSONEncoder().encode(userEncode)
print(userEncodeData as Any)