覆盖RLMObject -hash是否安全?

时间:2016-08-31 19:01:24

标签: objective-c hash realm

我需要一种方法来获取RLMObject的哈希码,但是当我检查域实现时,我发现Realm(objective-c)使用了primaryKey {{1} }}:

RLMObjectBase

我需要更多 hashable ,如果是对象属性则会有所不同。 我的问题是:我可以安全地覆盖我的子类上的- (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]; } } 方法而不会搞乱任何内部的Realm机制吗?

1 个答案:

答案 0 :(得分:3)

Realm在内部不使用-[RLMObject hash],因此它不会对您施加任何限制。

唯一的要求是通常的基础,-isEqual:返回YES的所有对象也必须具有来自-hash的相同结果,并且哈希不能在对象之后更改已添加到Foundation集合中。 Realm散列主键,因为这是识别它有权访问的对象的唯一不可变的东西。