【问题标题】:Comparing two dictionary of arrays for equality比较两个数组字典是否相等
【发布时间】:2018-05-02 14:54:50
【问题描述】:

我有以下类型的字典

[String : [String]]

在我的应用程序中,在运行时我请求更新包含上述类型字典的 var。我也在 CoreData 中存储了相同类型的字典。

我的问题是比较这两个字典是否相等的最佳方法是什么?我在想散列函数最适合这个,但不知道如何处理它

【问题讨论】:

  • isEqualToDictionary 有什么问题?
  • @Rei 为什么要使用 NSDictionary 的 Objective-C 方法来解决 Swift 字典和数组的问题?
  • @maku 你有例子吗? == 对我不起作用 我收到错误 - 二进制运算符 '==' 不能应用于两个 '[String : [String]]' 操作数
  • @bigubosu 普通的旧 == 有什么问题?

标签: arrays swift dictionary


【解决方案1】:

我相信这个功能是 swift 4 原生的:

https://developer.apple.com/documentation/swift/dictionary/2430767

考虑到编译器会为您检查类型并保证密钥,这样的函数会起作用:

func compare(left:[String:[String]], right: [String:[String]]) -> Bool {
     return left.keys == right.keys && left[left.keys.first!]! == right[right.keys.first!]! 
}

但是如果你出于某种原因想要循环遍历它,一个好方法是声明式的。

【讨论】:

  • 是 Swift 4.1 引入了条件一致性并使 == 适用于 OP 的情况。
【解决方案2】:

我试过这个例子:

var dict1: [String: [String]]!
var dict2: [String: [String]]!

func compareDictionaries(){
    if dict1 == dict2{
        print("equals")
    }
}

【讨论】:

  • 是的,但是您使用的是 Swift 4.1。 OP 不是。
猜你喜欢
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 2017-09-22
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多