【问题标题】:Binary operator '==' cannot be applied to two '[AnyHashable:Any]!' operands二元运算符 '==' 不能应用于两个 '[AnyHashable:Any]!'操作数
【发布时间】:2017-11-22 11:23:22
【问题描述】:

我打算用这种方式比较两个字典:

var previouldObj:[AnyHashable:Any]!
var obj:[AnyHashable:Any]!
for i in 0..<self.arrayData.count
{

     obj=self.arrayData[i] as! [AnyHashable:Any]
     if(obj == previouldObj)
     {

     }
}

但是我收到了这个错误

二元运算符 '==' 不能应用于两个 '[AnyHashable:Any]!'操作数

如何解决这个问题?请帮我 谢谢

【问题讨论】:

  • @UmairAfzal 我试过了,但是在哪里放置方便 init(dictionary otherDictionary: [AnyHashable : Any])?
  • 为什么不使用 isEqualToDictionary() 方法?
  • 输入@UmairAfzal 时甚至没有出现这种方法
  • public func ==(lhs: [String: AnyObject], rhs: [String: AnyObject] ) -> Bool { return NSDictionary(dictionary: lhs).isEqualToDictionary(rhs) } 给了我各种错误

标签: dictionary swift3 binary-operators


【解决方案1】:

一种方法是将previouldObj 转换为NSDictionary 并调用isEqual。

    var previouldObj:[AnyHashable:Any]!
    var nsDict = NSDictionary(dictionary: previouldObj)
    var obj:[AnyHashable:Any]!
    for i in 0..<self.arrayData.count
    {

        obj=self.arrayData[i] as! [AnyHashable:Any]
        if(nsDict.isEqual(to: obj))
        {

        }

【讨论】:

  • if(nsDict.isEqual(to: obj)==false) {} 但这总是返回 false。这是为什么。我的数组有很多相等的字典。我试图通过检查这个条件来避免重复。但我无法做到这一点
猜你喜欢
  • 2016-04-10
  • 2015-09-01
  • 2018-06-23
  • 2023-03-10
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多