Tho*_* G. 9 realm swift equatable
我们有一个简单的类Person,它来自领域Object.现在我们希望该子类符合Equatable协议.非常简单的代码看起来像这样.
class Person: Object, Equatable {
dynamic var localID = "0"
dynamic var name:String?
}
func ==(lhs: Person, rhs: Person) -> Bool {
return lhs.localID == rhs.localID
}
Run Code Online (Sandbox Code Playgroud)
我们从领域版本0.98.8开始,一切都按预期工作.当我们更新到版本0.102.0(以及其他版本之间)时,会出现编译器错误消息
Error: Redundant conformance of ‚Person‘ to protocol ‚Equatable‘
Run Code Online (Sandbox Code Playgroud)
不够奇怪,如果降级回版本0.98.8,错误仍然存在.另一个奇怪的行为,在我们的一个开发者机器上,相同的代码编译得很好.
经过一些研究,我们不知道发生了什么,以及如何解决或解决这个问题.
小智 13
默认情况下,最新版本的RealmSwift工具Equatable可以Object.swift从RealmSwift代码中查看.
要覆盖默认Equatable行为,您可以覆盖此功能:
public override func isEqual(object: AnyObject?) -> Bool
Run Code Online (Sandbox Code Playgroud)
之后,现有的Swift代码==将根据内部定义的自定义条件返回结果isEqual.无需func ==手动创建.
它仍然使用isEqual由于RLMObjectBase子类NSObject,而不是纯粹的Swift对象.