2014-01-14 342 views
-4

我有一個模型類(NSObject的子類),我存儲在2個可變數組中。在一個數組中,我直接存儲對象,而在另一個數組中,我使用[myObject copy]存儲它的副本。我想通過忽略指針,即存儲它們的地址來比較這兩個數組。如果對象匹配,則應返回YES比較NSObject忽略指針

我試過使用isEqualToArray,但它不適用於NSObject子類,因爲它也比較指針。

對此的建議或任何解決方法表示讚賞。

+1

在我看來,你已經得到了正確的答案已經到你以前的問題http://stackoverflow.com/questions/21109077/mutable-array-comparison-for-copied-objects。 –

+0

甚至很多答案已經存在,只是谷歌。 –

回答

1

您必須覆蓋在你的NSObject的子類兩種方法:

- (BOOL)isEqual:(id)object 
- (NSUInteger)hash 

添加要方法的isEqual邏輯,例如:

- (BOOL)isEqual:(id)object 
{ 
    MyObject *obj = (MyObject*)object; 
    if ([self.name isEqualToString obj.name]) 
     return YES; 
    else 
     return NO; 
} 

有很多在線的例子。之後,你可以cal isEqual來比較你的對象。 希望得到這個幫助。

+0

重寫這些方法讓我想起了Java。我想知道他們在這方面是否在這兩種語言之間有任何間接的歷史聯繫。 – Unheilig