我们有一个简单的类Person,它来自领域Object.
现在我们希望该子类符合Equatable协议.非常简单的代码看起来像这样.
现在我们希望该子类符合Equatable协议.非常简单的代码看起来像这样.
class Person: Object,Equatable { dynamic var localID = "0" dynamic var name:String? } func ==(lhs: Person,rhs: Person) -> Bool { return lhs.localID == rhs.localID }
我们从领域版本0.98.8开始,一切都按预期工作.当我们更新到版本0.102.0(以及其他版本之间)时,会出现编译器错误消息
Error: Redundant conformance of ‚Person‘ to protocol ‚Equatable‘
不够奇怪,如果降级回版本0.98.8,错误仍然存在.另一个奇怪的行为,在我们的一个开发者机器上,相同的代码编译得很好.
经过一些研究,我们不知道发生了什么,以及如何解决或解决这个问题.
最新版本的RealmSwift默认实现Equatable,您可以从RealmSwift代码中查看Object.swift.
要覆盖默认的Equatable行为,您可以覆盖此函数:
public override func isEqual(object: AnyObject?) -> Bool
之后,带有==的现有Swift代码将根据isEqual中定义的自定义条件返回结果.无需手动创建func ==.
它仍然使用isEqual,因为从NSObject继承了RLMObjectBase,而不是纯粹的Swift对象.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。