8

Personrealms から固有の単純なクラスがあり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
}

レルム バージョン 0.98.8 から始めて、すべてがアスペクトどおりに機能しました。バージョン 0.102.0 (およびその間の他のバージョン) に更新すると、コンパイラ エラー メッセージが表示されます。

Error: Redundant conformance of ‚Person‘ to protocol ‚Equatable‘

バージョン 0.98.8 にダウングレードしても、エラーは依然として残ります。もう 1 つの奇妙な動作は、開発者のマシンの 1 つで、同じコードが正常にコンパイルされることです。

いくつかの調査の結果、何が起こっているのか、これを修正または回避する方法はわかりません。

4

3 に答える 3

13

RealmSwiftデフォルトで実装されている最新バージョンは、コードからEquatable見ることができます。Object.swiftRealmSwift

デフォルトEquatableの動作をオーバーライドするには、この関数をオーバーライドできます。

public override func isEqual(object: AnyObject?) -> Bool

その後、既存の Swift コードは、==内部で定義されたカスタム条件に基づいて結果を返しisEqualます。func ==手動で作成する必要はありません。

純粋な Swift オブジェクトではなく、からサブクラス化されているisEqualため、まだ使用しています。RLMObjectBaseNSObject

于 2016-05-10T09:48:14.233 に答える
0

ではRealmSwiftObjectはすでに に準拠していEquatableます。Equatableしたがって、 の定義にを追加する必要はありません Person

しかし、これに問題を抱えているのはあなただけではないようです。

于 2016-05-10T07:11:31.800 に答える