Ich entwickle eine Funktionalität für zwei Teilmengen des einzelnen Typs. z.B. Früchte. Ich habe zwei Aufzählungen für Früchte, wie unten:Nicht in der Lage, Protokoll als Schlüssel im Wörterbuch in swift zu verwenden
enum SourFruits: String {
case Grape, Orange, Lemon
}
enum SweetFruits: String {
case Watermelon, Banana, Apple
}
Um diese beide als einzige Art in meiner Implementierung verwendet ich ein Protokoll verwenden:
protocol Fruits {
}
extension SweetFruits: Fruits {
}
extension SourFruits: Fruits {
}
Hier ist meine Implementierung wie folgt aussieht:
func doCommonOnFruit(fruit: Fruits) {
//Do common
}
func doSomeThingWithSourFruit(fruit: SourFruits) {
doCommonOnFruit(fruit)
// Do specific
}
func doSomeThingWithSweetFruit(fruit: SweetFruits) {
doCommonOnFruit(fruit)
// Do specific
}
Das funktioniert gut, aber wenn ich versuche, es in einer Karte als Schlüssel hinzuzufügen:
let map: [Fruit : String] = [:]
Es gibt mir eine Fehlermeldung sagt: Type 'Fruit' does not confirm to protocol 'Hashable'
. Meine Karte sollte jede (süße oder saure Frucht als Schlüssel) enthalten. Wie man das erreicht.
Ich habe versucht, Hashable
in Obst zu implementieren, aber es hat nicht funktioniert. Bitte hilf mir dabei.
'Ich habe versucht, Hashable in Obst zu implementieren, aber es hat nicht funktioniert' Sie sollten uns, was Sie ausprobiert haben. Die Implementierung von Hashable ist der richtige Weg, vielleicht haben Sie etwas falsch gemacht. – Moritz