我想從字典中添加項目到可變數組。問題是我想在添加新項目之前檢查現有的數組項目。如果數組中已有相同的項目,我想替換它。否則添加新的項目。 我該怎麼辦?將對象添加到可變數組
回答
您可以將[yourArray indexOfObject:yourObject];
的結果與NSNotFound
的結果進行比較,以確定該對象是否在陣列中。
它會給你要替換的對象的索引,或者如果它等於NSNotFound
,你會添加它。
對象平等使用isEqual:
方法進行測試。
NSArray class reference。
你也許可以使用NSMutableSet而不是NSMutableArray。 NSMutableSet上的addObject
方法只會「將給定的對象添加到該集合,如果它不是成員。」
如果您想加入到設置反正之前檢查的會員,您可以檢查的結果是:
[mySet containsObject:myObjectFromDictionary]
...返回指示該組是否已經包含了一個簡單的布爾值當對象傳遞給它的對象的isEqual
方法返回true。
(一點點額外的功能,NSCountedSet將跟蹤對象的數量添加到「設置」爲這isEqual:
返回true)
在它的面前,無論是文森特和豐富的答案是正確的。
但是,原始問題中存在一個概念性問題,尚未得到解決。
即,通過indexOfObject:
(或集合中的containsObject:
)的「成員數組」通過使用isEqual:
比較兩個對象最終完成。
如果isEqual:
返回YES,那麼這兩個對象在代碼中功能完全相同,否則在設計和實現中會出現其他更嚴重的問題。
因此,真正的問題應該是是「如何檢測對象是否已經在數組中而不添加它?」 Rich和Vincent的回答都是正確的。
I.e.你只需要檢查是否存在,如果存在的話,不採取任何行動。
(請注意,有些情況下更換實際上是保證深奧的情況,但他們都是真正的深奧和不是一般的可變集合的上下文中使用)
同意。很多功能可以依賴於isEqual的正確實現。有關於此問題的一篇很棒的SO帖子[這裏](http://stackoverflow.com/questions/1112373/implementing-hash-isequal-isequalto-for-objective-c-collections)。 (另外,只是簡單的說明,NSArray也支持'containsObject'方法,與NSSet一樣,它返回一個BOOL。) –
- 1. 對象 - 將對象添加到數組
- 2. 將對象添加到數組數組
- 3. 將對象添加到數組數組
- 4. 可可:將對象從循環添加到可變數組時出錯
- 5. 將多個對象添加到數組
- 6. 將對象添加到二維數組
- 7. SIGABRT將對象添加到數組時
- 8. 將元素添加到對象數組
- 9. 將數組添加到對象
- 10. 將文件對象添加到數組
- 11. 將類對象添加到數組[swift]
- 12. 將SimpleXMLElement對象添加到數組中
- 13. 如何將對象添加到數組?
- 14. 將對象添加到數組?
- 15. 將方法添加到對象數組
- 16. sql將對象添加到數組
- 17. 將json對象添加到數組php
- 18. 如何將對象添加到數組
- 19. 試圖將對象添加到數組
- 20. 將對象添加到數組
- 21. 添加到對象/數組
- 22. 如何使用「新」將對象變量添加到數組?
- 23. 將屬性變量添加到對象數組php
- 24. 將數組中的對象添加到可搜索列表
- 25. 將對象追加到對象數組
- 26. 如何將視圖控制器對象添加到可變數組?
- 27. 將自定義對象添加到可變數組時出現問題
- 28. 添加可變對象
- 29. 將對象添加到對象數組中
- 30. 將對象添加到PowerShell中的對象數組
使用'NSMutableSet' –