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]