2013-05-16 61 views
0

我想檢查我的NSMutableArray是否包含我的自定義對象。但是,如果我明白正確包含功能搜索在陣列相同的對象(放置在相同的存儲點)檢查對象數組中是否存在沒有循環的對象

if(![objectArray containsObject:objToCheck]) 
{ 
    [objectArray addObject:objToCheck]; 
}  

我知道objectArray具有相比objToCheck相同變量值相同對象,但例如如果始終返回false 。有沒有辦法檢查這個沒有寫自定義循環和比較對象的參數?

+0

您是否正在嘗試查找特定的對象實例或類對象? – uchuugaka

+1

取決於你想要做什麼,NSSet可能更有用。 – uchuugaka

+0

我想找到具體的對象,列表中的所有對象都是相同的類,所以我想找到具有相同變量值的對象 – Datenshi

回答

4

重寫自定義對象的[NSObject isEqual:]方法(實際上它是NSObject協議的一部分),並檢查任何實例變量對您來說是否有意義,以使對象被視爲相等。

Here's an Apple Cocoa Competency關於這個問題的文章。

+1

...並且與往常一樣,不要忘記相應地重寫'hash'。 –

+0

@NikolaiRuhe同意! – trojanfoe

+0

默認不會簡單地使用對象ID嗎? – uchuugaka

0

您可以嘗試從陣列中創建一個臨時NSSet並根據成員資格進行測試。

+0

倒票應該有評論 – uchuugaka

+0

可能是因爲NSSet沒有幫助比較對象。 「NSArray的'containsObject:'已經可以檢查成員資格。在這個問題中,這是缺少的比較。 –

+0

NSSet成員身份是自動唯一的對象實例。 NSArray可以多次保存相同的實例。也許我錯過了一些問題的角度。 – uchuugaka