Swift 可编码、可解码与可编码

Saz*_*han 3 composition swift codable decodable encodable

在 Apple doc 中发现,该Codable协议由Encodable和组成Decodable。因此,

Codable = Encodable & Decodable
Run Code Online (Sandbox Code Playgroud)

现在,假设我在下面的类中实现,

class X: Codable {
    var name: String
}

class Y: Encodable, Decodable {
    var name: String
}

class Z: Encodable & Decodable {
    var name: String
}
Run Code Online (Sandbox Code Playgroud)

那么,类X、Y和之间是否存在功能差异Z?

如果没有尊重为什么我们不能&在 的地方使用,?

Sh_*_*han 9

不,没有任何区别,Codable是 for 的类型别名Encodable & Decodable,因此它结合了您可以以任何方式自由使用的两种协议

在夫特&是一样的,在协议的组合物,以便Encodable, Decodable= Encodable & Decodable=Codable


iFa*_*teh 6

编码 将 自定义类型实例转换为其他表示形式(例如 JSON 和 pList)的过程称为编码或序列化。对于编码,自定义类型符合 Encodable 协议。

解码 将 JSON 或 pList 等表示形式的数据转换为自定义类型实例的过程称为解码或反序列化。对于解码,自定义类型符合 Decodable 协议。

Codable 为了同时支持编码和解码,自定义类型可以符合 Codable 协议,该协议同时符合 Encodable 和 Decodable。

要了解有关可编码、解码和编码的更多信息 ,请单击此链接