[英]adding objects to Mutable array
我想從字典將項目添加到可變數組。 問題是我想在添加新項目之前檢查現有的陣列項目。 如果數組中已經有相同的項目,我想替換它。 否則添加新項目。 我該怎么辦?
您也許可以使用NSMutableSet而不是NSMutableArray。 NSMutableSet上的addObject
方法只會“將給定對象添加到集合中,如果它還不是成員”。
如果仍要在添加到集合之前檢查成員資格,則可以檢查以下結果:
[mySet containsObject:myObjectFromDictionary]
...返回一個簡單的BOOL值,該值指示該集合是否已包含一個對象,當將對象傳遞給它時,其isEqual
方法返回true。
(對於一些額外的功能, NSCountedSet會跟蹤添加到isEqual:
的“集合”中的對象數isEqual:
返回true)
您可以比較以下結果: [yourArray indexOfObject:yourObject];
針對NSNotFound
來了解對象是否在數組中。
它將為您提供要替換的對象的索引,或者如果它等於NSNotFound
,則將其添加。
使用isEqual:
方法測試對象的相等性。
NSArray類參考 。
從表面上看,文森特和里奇的答案都是正確的。
但是,原始問題中有一個概念性問題尚未解決。
即,該“會員在數組”經由indexOfObject:
或containsObject:
在一組)最終通過比較使用兩個對象進行isEqual:
。
如果isEqual:
返回YES,則最好在代碼isEqual:
這兩個對象在功能上完全相同,否則在設計和實現中會遇到其他更為嚴重的問題。
因此,真正的問題應該是“如何檢測對象是否已存在於數組中而不添加它?” Rich和Vincent的答案仍然正確。
也就是說,您只需要檢查是否存在,如果存在,則不采取任何措施。
(請注意,在某些深奧的情況下實際上需要進行替換,但它們都是真正深奧的,並且通常不在可變集合的上下文中使用)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.