我有一個名爲selectedUsers的NSMutableArray,我使用名爲addUser的方法添加對象。被添加的對象通常是PLManagedUser類型(核心數據管理對象),但有時對象可能是字符串。在任何情況下,如果數組已經包含對象,我不想將它添加到數組中。下面是代碼:NSArray containsObject方法不一致的結果
- (void)addUser:(id)user withTitle:(NSString *)title {
if (![_selectedUsers containsObject:user]) {
[_selectedUsers addObject:user];
}
}
我注意到,如果我嘗試添加相同的用戶回用上述方法來備份,在containsObject捕獲它,並且不添加重複。但是,如果在添加其他對象之後添加相同的用戶(具有相同的內存地址),則會添加重複項。
我打印數組的內容,每次我添加一些內容以確認重複的對象在數組中。
我的問題是,有什麼明顯的原因,爲什麼containsObject不一致在這裏工作?
'PLManagedUser'是否實現'isEqual:'和'hash'方法? – trojanfoe
我應該補充說我正在調試我沒有寫的代碼 - 我怎麼知道這個?它繼承自NSObject,所以我會這麼認爲? – jac300
默認情況下'isEqual:'方法只會進行指針檢查;但這不符合你的問題中的陳述,所以也許更深層的事情正在發生。 – trojanfoe