类型 'User' 不符合协议 'Hashable'

Type 'User' does not conform to protocol 'Hashable'

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)
}

但是它说,类型 'User' 不符合协议 'Hashable'

请记住,当您使类型符合 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