0
[NSArray containsObject]使用isEqual。 isEqual默認爲該地址。如果我想知道某個對象是否位於NSArray中,我應該怎麼做?
說我想知道[NSArray containsObject]是否基於引用?所以我想知道這個實際對象,而不是一個對象eQual,是否在數組中。
我想用它來比較核心數據對象。核心數據對象可能會被刪除和取消引用,我想知道包含引用它的元素的所有數組會發生什麼。
[NSArray containsObject]使用isEqual。 isEqual默認爲該地址。如果我想知道某個對象是否位於NSArray中,我應該怎麼做?
說我想知道[NSArray containsObject]是否基於引用?所以我想知道這個實際對象,而不是一個對象eQual,是否在數組中。
我想用它來比較核心數據對象。核心數據對象可能會被刪除和取消引用,我想知道包含引用它的元素的所有數組會發生什麼。
默認的isEqual的地址
而且在這種情況下,有沒有問題?
這聽起來像你想存儲的對象isEqual
不是使用地址,但仍然使用該地址進行此檢查,對不對?
有沒有-[containsObjectIdenticalTo:]
,但有一個-[indexOfObjectIdenticalTo:]
;如果它返回除NSNotFound之外的任何內容,則包含它。
if ([anArray indexOfObjectIdenticalTo:anObject] != NSNotFound) {
}
作爲the NSArray reference docs明確:
對象被認爲是相同的,如果它們的對象的地址是相同的。
在NSArray
和其他收集方法上有一整套Identical
方法,這些方法完全是爲了這個目的。
abarnert的回答是正確的。忘記我以前的答案。 – nielsbot