这个问题在这里已有答案:
嗨,我想比较Dictionary
类型的两个[AnyHashable : Any]
我已经经历了几个答案,但我不明白如何实现相同。
例如,这个链接How do I compare two dictionaries in Swift?上接受的答案
我在哪里写出给定的方法
public func ==<K, V: Hashable>(lhs: [K: V], rhs: [K: V] ) -> Bool {
return (lhs as NSDictionary).isEqual(to: rhs)
}
我尝试在Dictionary Extension
中声明它,但它没有帮助
请不要将此标记为重复我已经给出了我想要遵循的答案的链接,但它没有帮助
你无法比较Any
对象,因为它不符合Equatable协议。您只能比较像:[AnyHashable: Equatable]
这样的词典
根据给定的代码
public func ==<K, V: Hashable>(lhs: [K: V], rhs: [K: V] ) -> Bool {
return (lhs as NSDictionary).isEqual(to: rhs)
}
字典值应符合Hashable
协议。在这种情况下,您无法将[AnyHashable: Any]
与==
运算符进行比较。它会抛出以下错误。
类型'Any'不符合协议'Equatable'
因此,如果我们将字典作为[AnyHashable: AnyHashable]
,您可以使用默认的原生==
opeartor进行比较,如下所示。
var dict1: [AnyHashable: AnyHashable] = ["Average": 10.0]
var dict2: [AnyHashable: AnyHashable] = ["Average": 10.0]
if dict1 == dict2 {
print("Equal")
} else {
print("Not Equal")
}
输出:“平等”