在 swift 中设置 equatable 时出现错误
extension PFObject : Equatable {}
public func ==(lhs:PFObject,rhs:PFObject) -> Bool {
return lhs.objectId == rhs.objectId
}
下面我得到以下错误
“PFObject”与协议“Equatable”的冗余一致性
这个错误有什么解决办法吗?
在 swift 中设置 equatable 时出现错误
extension PFObject : Equatable {}
public func ==(lhs:PFObject,rhs:PFObject) -> Bool {
return lhs.objectId == rhs.objectId
}
下面我得到以下错误
“PFObject”与协议“Equatable”的冗余一致性
这个错误有什么解决办法吗?
Swift 2 中的更改通过简单地比较指针值的实现使每个都NSObject
符合(在此处阅读更多内容)。Equatable
isEqual
您可以使用以下扩展来覆盖的默认实现isEqual
:
extension PFObject {
public override func isEqual(object: AnyObject?) -> Bool {
if (object as? PFObject)?.objectId == self.objectId {
return true
} else {
return super.isEqual(object)
}
}
}
PFObject
继承自NSObject
所以它已经符合Equatable
.
而不是添加Equatable
到已经实现它的类,您应该将其子类化并覆盖默认实现。
这是一个示例实现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)
}
}
}