簡體   English   中英

將對象添加到可變數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM