请记住,当您的类型符合
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
(即Mappable
、CustomStringConvertible
、Hashable
(的所有要求