比较领域对象
Posted
技术标签:
【中文标题】比较领域对象【英文标题】:Compare realm objects 【发布时间】:2016-02-12 09:22:53 【问题描述】:在下面,d
和 dictionary
指的是同一个领域对象,但 ==
和 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 作为解决方法。
【问题讨论】:
【参考方案1】:isEqualToObject:
检查两个对象实例是否引用同一个底层持久化对象。
【讨论】:
【参考方案2】:默认的isEqual:
实现只是比较内存地址,就像==
一样。
您必须自己实现-isEqualToUserDictionary:(UserDictionary*)
。
你也可以实现-isEqual:(id)
方法,但是你应该
首先在方法中检查对象的类型。
您不应该比较对象的主键,而是比较它的所有字段。
实现-hash
是使您的对象具有可比性的好方法。
【讨论】:
以上是关于比较领域对象的主要内容,如果未能解决你的问题,请参考以下文章