类型“用户”不符合协议“哈希”

时间:2019-10-23 09:52:49

标签: swift4 codable 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)
}

但是,它说,类型“用户”不符合协议“哈希”

1 个答案:

答案 0 :(得分:1)

请记住,当您使类型符合writeFile时,您需要实现该protocol的必需实体(属性,方法)。例如,Hashable具有必需的方法protocol,因此您需要按以下方法实现,

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? } (即protocolMappableCustomStringConvertible)的所有要求