ios - 在 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
但它没有帮助
请不要将此标记为重复我已经给出了我正在尝试遵循的答案的链接,但这没有帮助
解决方案
根据给定的代码
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")
}
输出:“相等”
推荐阅读
- ios - 我们可以获取 iOS 手机 ID 和上次通话记录报告吗?
- javascript - 使用javascript生成excel文件时无法显示表情符号
- c# - 如何检查某些数据是否已经在数据库中?
- html - 父 div 对齐内容:居中,最后一个孩子对齐:左
- c# - 验证信号器集线器连接
- android - 通过在android中按下添加按钮,服务器没有响应
- c# - 如何获取自定义字段值 acumatica
- java - Java(Spring)按时区错误自动更正日期
- algorithm - 如何最小化水泵与城市之间的平均距离?
- python - 如何单击硒中的加载更多按钮直到页面结束python?