2016-08-31 4 views
2

私はRLMObjectのハッシュコードを取得する方法が必要ですが、私はレルム実装を検査していたと私は、レルム(Objective-Cのは)RLMObjectBaseprimaryKeyを使用していることが分かったとき:RLMObject -hashを上書きすることは安全ですか?

- (NSUInteger)hash { 

    if (_objectSchema.primaryKeyProperty) { 
     id primaryProperty = [self valueForKey:_objectSchema.primaryKeyProperty.name]; 

     // modify the hash of our primary key value to avoid potential (although unlikely) collisions 
     return [primaryProperty hash]^1; 
    } 
    else { 
     return [super hash]; 
    } 
} 

私が何かを必要としますハッシュ可能とは、オブジェクトのプロパティが異なる場合です。 私の質問は:-hashメソッドをサブクラス上で安全にオーバーライドできますか?

答えて

3

レルムは-[RLMObject hash]を内部的に使用しないため、オーバーライドに制限はありません。

唯一の要件

-isEqual:戻っても -hashから同じ結果を持っている必要がありますため YES、およびハッシュがオブジェクトの後に変更することはできません任意のオブジェクトは、財団コレクションに追加されている通常のファンデーションです。 Realmはプライマリキーをハッシュします。これは、それがアクセスできるオブジェクトを識別する唯一の不変なものだからです。

+0

説明をいただきありがとうございます –

関連する問題