gpt4 book ai didi

swift - RealmObject Equatable 冗余消息

转载 作者:IT王子 更新时间:2023-10-29 05:41:17 26 4
gpt4 key购买 nike

我们有一个简单的类Person,它继承自 Realm Object。现在我们希望该子类符合 Equatable 协议(protocol)。非常简单的代码如下所示。

class Person: Object, Equatable {

dynamic var localID = "0"
dynamic var name:String?
}

func ==(lhs: Person, rhs: Person) -> Bool {

return lhs.localID == rhs.localID
}

我们从 Realm 版本 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,因为 RLMObjectBaseNSObject 的子类,而不是纯 Swift 对象。

关于swift - RealmObject Equatable 冗余消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37131142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com