1

在 swift 中设置 equatable 时出现错误

extension PFObject : Equatable {}

public func ==(lhs:PFObject,rhs:PFObject) -> Bool {

return lhs.objectId == rhs.objectId
}

下面我得到以下错误

“PFObject”与协议“Equatable”的冗余一致性

这个错误有什么解决办法吗?

4

3 回答 3

3

Swift 2 中的更改通过简单地比较指针值的实现使每个都NSObject符合(在此处阅读更多内容)。EquatableisEqual

您可以使用以下扩展来覆盖的默认实现isEqual

extension PFObject {
  public override func isEqual(object: AnyObject?) -> Bool {
    if (object as? PFObject)?.objectId == self.objectId {
      return true
    } else {
      return super.isEqual(object)
    }
  }
}
于 2015-09-08T21:07:19.987 回答
0

PFObject继承自NSObject所以它已经符合Equatable.

而不是添加Equatable到已经实现它的类,您应该将其子类化并覆盖默认实现。

于 2015-08-24T14:53:21.060 回答
0

这是一个示例实现isEqual,它还检查对象是否具有相同的 Parse 对象类型。

extension PFObject {
    open override func isEqual(_ object: Any?) -> Bool {
        if let parseObject = object as? PFObject {
            return parseObject.parseClassName == self.parseClassName && parseObject.objectId == self.objectId
        } else {
            return super.isEqual(object)
        }
    }
}
于 2018-08-11T20:49:59.573 回答