如果我想通过它的地址知道对象是否在NSArray中,我该怎么办?

时间:2012-10-30 23:50:50

标签: objective-c xcode4.5

[NSArray containsObject]使用isEqual。 isEqual默认为地址。

说我想知道基于引用的[NSArray containsObject]是否?所以我想知道实际的对象,而不是它的对象eQual是否在数组中。

我想用它来比较核心数据对象。核心数据对象可能会被删除和解除引用,我想知道包含引用它的元素的所有数组会发生什么。

1 个答案:

答案 0 :(得分:2)

  

isEqual默认为地址

在那种情况下,有问题吗?

听起来你想要存储isEqual 使用地址的对象,但是仍然使用这个检查的地址,对吗?

没有-[containsObjectIdenticalTo:],但有一个-[indexOfObjectIdenticalTo:];如果它返回除NSNotFound以外的任何内容,则包含它。

if ([anArray indexOfObjectIdenticalTo:anObject] != NSNotFound) {
}

正如the NSArray reference docs明确指出:

  

如果对象的对象地址相同,则认为它们是相同的。

Identical和其他集合上有一整套NSArray方法,正是出于此目的。