2016-02-12 164 views
0

以下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作爲解決方法。

回答

3

isEqualToObject:檢查兩個對象實例是否引用相同的基礎持久對象。

1

默認isEqual:執行簡單地比較內存地址,因爲==

您必須自己實施-isEqualToUserDictionary:(UserDictionary*)
您也可以實施-isEqual:(id)方法,但您應該在方法中首先檢查對象的類型。

您不應該比較對象的主鍵,而應該比較其所有字段。

實現-hash是讓您的對象具有可比性的好方法。