【问题标题】:Type 'User' does not conform to protocol 'Hashable'类型“用户”不符合协议“可哈希”
【发布时间】:2019-10-23 09:52:49
【问题描述】:
class User: Mappable, CustomStringConvertible, Hashable{

    static func == (lhs: WUser, rhs: WUser) -> Bool {
        return lhs.name == rhs.name 
    }
    var name: String?
    var email: String?
    .
    .
  }

可映射在哪里

protocol Mappable: Codable {
    init?(jsonData: Data?)
    init?(jsonString: String)
}

但它说,Type 'User' 不符合协议 'Hashable'

【问题讨论】:

    标签: swift4 codable hashable


    【解决方案1】:

    请记住,当您使您的类型符合protocol 时,您需要实现该protocol 所需的实体(属性、方法)。例如,Hashable 有所需的方法hash(into hasher: inout Hasher) 所以你需要实现它,如下所示,

    class WUser: Mappable, CustomStringConvertible, Hashable {
    
        func hash(into hasher: inout Hasher) {
            hasher.combine(self.name)
            hasher.combine(self.email)
        }
    
        required init?(jsonData: Data?) {
    
        }
    
        required init?(jsonString: String) {
    
        }
    
        var description: String {
            return self.name ?? ""
        }
    
        static func == (lhs: WUser, rhs: WUser) -> Bool {
            return lhs.name == rhs.name
        }
        var name: String?
        var email: String?
    }
    

    上面的代码没有编译问题,因为我已经实现了每个protocol(即MappableCustomStringConvertibleHashable)的所有要求

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 2019-11-23
      • 2023-03-24
      相关资源
      最近更新 更多