RealmObject Equatable冗余消息

问题描述 投票:9回答:3

我们有一个简单的类qazxsw poi,它继承自qmsxsw poi领域。现在我们希望该子类符合Person协议。非常简单的代码看起来像这样。

Object

我们从领域版本0.98.8开始,一切都按预期工作。当我们更新到版本0.102.0(以及其他版本之间)时,会出现编译器错误消息

Equatable

不够奇怪,如果降级回版本0.98.8,错误仍然存​​在。另一个奇怪的行为,在我们的一个开发者机器上,相同的代码编译得很好。

经过一些研究,我们不知道发生了什么,以及如何解决或解决这个问题。

swift realm equatable
3个回答
13
投票

最新版本的class Person: Object, Equatable { dynamic var localID = "0" dynamic var name:String? } func ==(lhs: Person, rhs: Person) -> Bool { return lhs.localID == rhs.localID } 默认使用Error: Redundant conformance of ‚Person‘ to protocol ‚Equatable‘ ,你可以从RealmSwift代码查看Equatable

要覆盖默认的Object.swift行为,您可以覆盖此函数:

RealmSwift

之后,使用Equatable的现有Swift代码将根据public override func isEqual(object: AnyObject?) -> Bool 中定义的自定义条件返回结果。无需手动创建==

它仍然使用isEqual,因为从func ==子类化的isEqual,而不是纯粹的Swift对象。


1
投票

Swift 4的更新签名是:

RLMObjectBase

0
投票

NSObjectopen override func isEqual(_ object: Any?) -> Bool { return true } 已经符合RealmSwift。所以你不必在Object的定义中添加Equatable

Equatable

© www.soinside.com 2019 - 2024. All rights reserved.