迭代时从NSMutableArray中删除的最佳方法?

在Cocoa中,如果我想循环遍历NSMutableArray并删除多个符合特定条件的对象,那么在每次删除对象时都无需重新启动循环的最佳方法是什么?


谢谢,


编辑:只是为了澄清-我一直在寻找最佳方法,例如,比手动更新索引更优雅的方法。例如,在C ++中,我可以做到;


iterator it = someList.begin();


while (it != someList.end())

{

    if (shouldRemove(it))   

        it = someList.erase(it);

}


慕尼黑8549860
浏览 708回答 3
3回答

守候你守候我

另一种变化。因此,您可以获得可读性和良好的性能:NSMutableIndexSet *discardedItems = [NSMutableIndexSet indexSet];SomeObjectClass *item;NSUInteger index = 0;for (item in originalArrayOfItems) {    if ([item shouldBeDiscarded])        [discardedItems addIndex:index];    index++;}[originalArrayOfItems removeObjectsAtIndexes:discardedItems];

蓝山帝景

这是一个非常简单的问题。您只是向后迭代:for (NSInteger i = array.count - 1; i >= 0; i--) {   ElementType* element = array[i];   if ([element shouldBeRemoved]) {       [array removeObjectAtIndex:i];   }}这是非常常见的模式。
打开App,查看更多内容
随时随地看视频慕课网APP