我需要一种方法来获取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机制吗?
答案 0 :(得分:3)
Realm在内部不使用-[RLMObject hash]
,因此它不会对您施加任何限制。
唯一的要求是通常的基础,-isEqual:
返回YES
的所有对象也必须具有来自-hash
的相同结果,并且哈希不能在对象之后更改已添加到Foundation集合中。 Realm散列主键,因为这是识别它有权访问的对象的唯一不可变的东西。