Skip to content

Swift: Hashable Struktur mit Dictionary-Eigenschaft

Lösung:

Ich denke, Sie müssen Ihr Datenmodell überprüfen, wenn Sie eine ganze Struktur als Wörterbuchschlüssel verwenden müssen. Wie auch immer, hier ist eine Möglichkeit:

internal struct MapKey: Hashable {
    internal let id: String
    internal let values: [String:String]

    var hashValue: Int {
        get {
            var hashString = self.id + ";"
            for key in values.keys.sort() {
                hashString += key + ";" + values[key]!
            }

            return hashString.hashValue
        }
    }
}

func ==(lhs: MapKey, rhs: MapKey) -> Bool {
    return lhs.id == rhs.id && lhs.values == rhs.values
}

Dies setzt voraus, dass Sie kein Semikolon (;) in id oder in den Schlüsseln und Werten von values. Hasable impliziert Equatable Sie müssen es also nicht als konform deklarieren Equatable wieder.

Click to rate this post!
[Total: 0 Average: 0]



Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.