首页 > 解决方案 > 在 Swift 中比较 Dictionary 的相等性

问题描述

嗨,我想比较两种Dictionary类型,[AnyHashable : Any]我已经经历了一些答案,但我不明白如何实现相同的目标。

例如,此链接上接受的答案 How do I compare two dictionary in Swift?

我在哪里写给定的方法

public func ==<K, V: Hashable>(lhs: [K: V], rhs: [K: V] ) -> Bool {
    return (lhs as NSDictionary).isEqual(to: rhs)
}

我尝试在 a 中声明它,Dictionary Extension但它没有帮助

请不要将此标记为重复我已经给出了我正在尝试遵循的答案的链接,但这没有帮助

标签: iosswiftdictionary

解决方案


根据给定的代码

public func ==<K, V: Hashable>(lhs: [K: V], rhs: [K: V] ) -> Bool {
    return (lhs as NSDictionary).isEqual(to: rhs)
}

字典值应符合Hashable协议。在这种情况下,您无法[AnyHashable: Any]==运算符进行比较。它会抛出以下错误。

类型 'Any' 不符合协议 'Equatable'

因此,如果我们有字典 as [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")
}

输出:“相等”


推荐阅读