代码之家  ›  专栏  ›  技术社区  ›  Sazzad Hissain Khan

快速可编码、可解码与可编码

  •  0
  • Sazzad Hissain Khan  · 技术社区  · 5 年前

    发现于苹果 doc 那个 Codable 协议由以下部分组成: Encodable Decodable 因此

    Codable = Encodable & Decodable
    

    现在,让我们假设我实现了以下类,

    class X: Codable {
        var name: String
    }
    
    class Y: Encodable, Decodable {
        var name: String
    }
    
    class Z: Encodable & Decodable {
        var name: String
    }
    

    那么,这些类之间有没有功能上的差异, X , Y Z ?

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

    3 回复  |  直到 4 年前
        1
  •  10
  •   Shehata Gamal    5 年前

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

    迅速地 & , 所以 Encodable, Decodable = 可编码&可解码 = 可编码

        2
  •  2
  •   Fateh    3 年前

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

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

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

    阅读更多关于 可编码 , 解码 编码 Click on the this Link

        3
  •  3
  •   Rob C    5 年前

    它们在功能上是相同的,但你可以用&不能使用逗号分隔列表的语法。这两种方法都不适用于逗号方法。

    public typealias Codable = Decodable & Encodable
    
    func doSomething(with item: ProtocolA & ProtocolB) {
    }
    
        4
  •  2
  •   Thijs van der Heijden    5 年前

    别这么想。可编码意味着它们可以从另一个表示中解码并编码到另一个表示中。可解码意味着它可以被解码,但不能被编码。而encodable恰恰相反。

    推荐文章