Помните, что когда вы соответствуете своему типу 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
)