【问题标题】:Is it safe to override RLMObject -hash?覆盖 RLMObject -hash 是否安全?
【发布时间】:2016-08-31 19:01:23
【问题描述】:

我需要一种方法来获取RLMObject 的哈希码,但是当我检查领域实现时,我发现领域(objective-c)在RLMObjectBase 上使用primaryKey

- (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];
    }
}

我需要更多的hashable 并且如果对象属性不同。 我的问题是:我可以安全地覆盖我的子类上的 -hash 方法,而不会弄乱任何内部 Realm 机制吗?

【问题讨论】:

    标签: objective-c hash realm


    【解决方案1】:

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

    唯一的要求是通常的 Foundation 要求,即任何 -isEqual: 返回 YES 的对象也必须具有与 -hash 相同的结果,并且在对象添加到 Foundation 后哈希不能更改收藏。 Realm 对主键进行哈希处理,因为这是标识它有权访问的对象的唯一不可变事物。

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 2023-02-14
      • 1970-01-01
      • 2011-02-09
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      相关资源
      最近更新 更多