14 votes

Swift - Le type '' n'est pas conforme au protocole 'Hashable'.

J'ai donc cette structure :

struct ListAction: Hashable {
    let label: String
    let action: (() -> Void)? = nil
    let command: Command? = nil
}

Mais j'obtiens une erreur sur la ligne où il est déclaré qui dit Type 'ListAction' does not conform to protocol 'Hashable' .

Je peux me débarrasser de l'erreur si je supprime la ligne définissant l'élément action constant mais je ne veux pas supprimer cette ligne de façon permanente.

J'utilise Swift 5.1.

28voto

bbarnhart Points 3604

Fournissez votre propre mise en œuvre pour Hashable en passant outre hash(into:) et appeler combine sur toutes les propriétés pertinentes.

struct ListAction: Hashable {
    static func == (lhs: ListAction, rhs: ListAction) -> Bool {
        return lhs.label == rhs.label && lhs.command == rhs.command
    }

    func hash(into hasher: inout Hasher) {
        hasher.combine(label)
        hasher.combine(command)
    }

    let label: String
    let action: (() -> Void)? = nil
    let command: Command? = nil
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X