嗨,我想比较两个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
中声明它,但没有帮助
请不要将此标记为重复项,我已经给出了我要遵循的答案的链接,但这无济于事
答案 0 :(得分:1)
您无法比较Any
对象,因为它不符合Equatable协议。您只能比较类似[AnyHashable: Equatable]
答案 1 :(得分:1)
按照给定的代码
public func ==<K, V: Hashable>(lhs: [K: V], rhs: [K: V] ) -> Bool {
return (lhs as NSDictionary).isEqual(to: rhs)
}
字典值应符合Hashable
协议。在这种情况下,您无法将[AnyHashable: Any]
与==
运算符进行比较。它将引发以下错误。
类型“任何”都不符合协议“平等”
因此,如果我们将字典设为[AnyHashable: AnyHashable]
,则可以使用默认的本机==
运算符进行比较,如下所示。
var dict1: [AnyHashable: AnyHashable] = ["Average": 10.0]
var dict2: [AnyHashable: AnyHashable] = ["Average": 10.0]
if dict1 == dict2 {
print("Equal")
} else {
print("Not Equal")
}
输出:“等于”