2014-01-14 196 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