刪除NSArray的元素我有他們NSDictionay結構看起來像這樣根據其價值
ID = 22;
SERIESID = 33;
YEAREND = 2002;
YEARSTART = 1996;
我有十幾個在我的陣列,這些元素的NSDictionary的NSArray的價值觀,我想知道如何從NSArray中刪除具有相同SERIESID的元素,或者在已經創建了NSArray後,甚至可以刪除這些元素。
任何幫助,將不勝感激。
刪除NSArray的元素我有他們NSDictionay結構看起來像這樣根據其價值
ID = 22;
SERIESID = 33;
YEAREND = 2002;
YEARSTART = 1996;
我有十幾個在我的陣列,這些元素的NSDictionary的NSArray的價值觀,我想知道如何從NSArray中刪除具有相同SERIESID的元素,或者在已經創建了NSArray後,甚至可以刪除這些元素。
任何幫助,將不勝感激。
基本上,遍歷數組,跟蹤所看到的SERIESID,並且如果當前元素的SERIESID是重複的,則將其標記爲刪除。
像這樣:
NSMutableSet *seen = [NSMutableSet set];
NSMutableIndexSet *toDelete = [NSMutableIndexSet indexSet];
[yourArray enumerateObjectsUsingBlock:^(id dict, NSUInteger i, BOOL *stop) {
if ([seen containsObject:dict[@"SERIESID"]]) {
[toDelete addIndex:i];
} else {
[seen addObject:dict[@"SERIESID"]];
}
}];
[yourArray removeObjectsAtIndexes:toDelete];
(作爲一個方面說明,你就必須做刪除,即使它是不是最直觀的方法這樣的NSMutableArray的目的不是要改變的同時。你正在循環中,所以如果你只是在你的循環中嘗試使用removeObjectAtIndex:
就會出錯,這就是爲什麼我們要建立一個我們想要刪除的對象列表,然後在最後把它交給數組)
哈哈,偉大的思想家都一樣。看起來你設法按下返回按鈕的速度更快。 :)使用枚舉。 – 2013-04-22 23:38:17
好吧,現在就試試這個吧..我會讓你知道我怎麼去吃點東西,所以可能需要30分鐘左右。 – HurkNburkS 2013-04-22 23:39:19
y這工作得很好..對不起,遲到的回覆在這一切中間吃過午飯,幾乎忘了回去lol – HurkNburkS 2013-04-23 00:57:32
創建一個NSMutableSet
以包含使用的SERIESID
的值。在陣列中的每個字典中運行for
循環。在遍歷每個字典時,檢查字典的SERIESID
鍵的對象。如果它尚未出現在集合中,請添加它。如果它已經存在,則從陣列中刪除該對象。當迭代完成時,對於SERIESID
的每個值,數組中只有一個對象。請注意,這顯然意味着具有唯一SERIESID
的字典的第一個實例將保留,因此在迭代數組之前,請確保您有可用的字典。
如果你需要做到這一點需要精確的方法更具體的信息,請查看documentation.
我沒有測試過這一點,但你可以做一些與此類似:
NSMutableArray *seriesHolder = [NSMutableArray alloc]init];
for(NSMutableDictionary *dict in yourMutableArray)
{
NSString *seriesID = [dict objectForKey:@"SERIESID"];
if(![seriesHolder containsObject:seriesID])
{
[seriesHolder addObject:seriesID];
}
else
{
[yourMutableArray removeObject:dict];
}
}
這會起作用,但我會指向@查克的回答。這正是「NSSet」的原因,而不是陣列。 – 2013-04-22 23:39:41
是的好電話,這是一個超級乾淨的答案 – 2013-04-22 23:40:33
好首先,你應該只從*** NSMutableArray ***中刪除對象,而不是不可變的NSArray。 – 2013-04-22 23:15:10
你的問題不太清楚。 「從NSArray中刪除具有相同SERIESID的元素」?你說'NSMutableArray'包含這些字典。你是說如果數組中的多個字典中存在相同的值? – 2013-04-22 23:17:40
好點...可以改變:P運氣:) – HurkNburkS 2013-04-22 23:17:52