比较领域对象

时间:2016-02-12 09:22:54

标签: objective-c realm

下面,ddictionary引用相同的域对象,但==isEqual:都会生成NO。比较没有主键的领域对象的最佳方法是什么?

(lldb) po d
UserDictionary {
    dateImported = 2016-02-12 03:44:53 +0000;
    dirtyProperties = RLMArray <0x7f01a110> (

    );
    var1 = ingles;
    var2 = ;
    var3 = ;
    name = bab.la (popup);
    url = http://en.bab.la/dictionary/%(var1)s-english/%(term)s;
    toLanguage = es;
    fromLanguage = en;
}

(lldb) po dictionary
UserDictionary {
    dateImported = 2016-02-12 03:44:53 +0000;
    dirtyProperties = RLMArray <0x7a1b4d30> (

    );
    var1 = ingles;
    var2 = ;
    var3 = ;
    name = bab.la (popup);
    url = http://en.bab.la/dictionary/%(var1)s-english/%(term)s;
    toLanguage = es;
    fromLanguage = en;
}

这必须在某个地方完成,因为我能够在RLMResults中使用indexOfObject作为解决方法。

2 个答案:

答案 0 :(得分:3)

isEqualToObject:检查两个对象实例是否引用相同的底层持久对象。

答案 1 :(得分:1)

默认isEqual:实现只是比较内存地址,如==那样。

您必须自己实施-isEqualToUserDictionary:(UserDictionary*) 您也可以实现-isEqual:(id)方法,但您应该这样做 首先在方法中检查对象的类型。

你不应该比较对象的主键,而是比较它的所有字段。

实施-hash是让对象具有可比性的好方法。