2012-10-30 46 views
0

[NSArray containsObject]使用isEqual。 isEqual默認爲該地址。如果我想知道某個對象是否位於NSArray中,我應該怎麼做?

說我想知道[NSArray containsObject]是否基於引用?所以我想知道這個實際對象,而不是一個對象eQual,是否在數組中。

我想用它來比較核心數據對象。核心數據對象可能會被刪除和取消引用,我想知道包含引用它的元素的所有數組會發生什麼。

回答

2

默認的isEqual的地址

而且在這種情況下,有沒有問題?

這聽起來像你想存儲的對象isEqual不是使用地址,但仍然使用該地址進行此​​檢查,對不對?

有沒有-[containsObjectIdenticalTo:],但有一個-[indexOfObjectIdenticalTo:];如果它返回除NSNotFound之外的任何內容,則包含它。

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

作爲the NSArray reference docs明確:

對象被認爲是相同的,如果它們的對象的地址是相同的。

NSArray和其他收集方法上有一整套Identical方法,這些方法完全是爲了這個目的。

+0

abarnert的回答是正確的。忘記我以前的答案。 – nielsbot

相關問題