Тип «Пользователь» не соответствует протоколу «Hashable» - PullRequest
0 голосов
/ 23 октября 2019
class User: Mappable, CustomStringConvertible, Hashable{

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

Где Mappable -

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

Но это говорит, Тип 'Пользователь' не соответствует протоколу 'Hashable'

1 Ответ

1 голос
/ 24 октября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...