在swift
中设置equatable时遇到错误extension PFObject : Equatable {}
public func ==(lhs:PFObject,rhs:PFObject) -> Bool {
return lhs.objectId == rhs.objectId
}
下面的错误我得到了
'PFObject'与协议'Equatable'的冗余一致性
这个错误有什么解决方案吗?
答案 0 :(得分:3)
Swift 2中的更改使每个NSObject
符合Equatable
通过isEqual
实现,它只是比较指针值(read more here)。
您可以使用以下扩展名覆盖isEqual
的默认实现:
extension PFObject {
public override func isEqual(object: AnyObject?) -> Bool {
if (object as? PFObject)?.objectId == self.objectId {
return true
} else {
return super.isEqual(object)
}
}
}
答案 1 :(得分:0)
PFObject
继承自NSObject
,因此已符合Equatable
。
不应将Equatable
添加到已实现它的类中,而应将其子类化并覆盖默认实现。
答案 2 :(得分: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)
}
}
}