【问题标题】:Comparing two Any values [duplicate]比较两个任何值[重复]
【发布时间】:2019-12-30 22:44:16
【问题描述】:

我有一个用例,我需要比较两个我不知道类型的 Any 值。

// assuming I have something like:
var myDict = [
  "a": "one",
  "b": 2,
  "c": false
]
var newDict = [
  "a": "one",
  "c": true
]

func updateDict() -> Bool {
  var hasChanged = false
  newDict.forEach { (key: String, value: Any) in
    if myDict[key] != value {
      hasChanged = true
    }
    myDict[ket] = value
  }
  return hasChanged
}

既然if myDict[key] != value 不起作用,我该如何实现呢?

【问题讨论】:

    标签: ios swift casting compare any


    【解决方案1】:

    您可以使用在NSDictionary 上定义的isEqual(to:)

    var myDict: [String : Any] = [
        "a": "one",
        "b": 2,
        "c": false
        ]
    
    var newDict: [String : Any] = [
        "a": "one",
        "c": true
    ]
    
    NSDictionary(dictionary: myDict).isEqual(to: newDict)  // false
    

    【讨论】:

      【解决方案2】:

      现在我所做的是:

      if let oldValue = values[key] {
          changed = (String(describing: oldValue) != String(describing: value))
      } else {
          changed = true
      }
      

      它并不完美,但可以满足我的需要

      【讨论】:

        猜你喜欢
        • 2015-12-08
        • 1970-01-01
        • 2014-01-09
        • 1970-01-01
        • 1970-01-01
        • 2021-06-14
        • 2014-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多