在Cocoa中,如果我想循环遍历NSMutableArray并删除多个符合特定条件的对象,那么在每次删除对象时都无需重新启动循环的最佳方法是什么?谢谢,编辑:只是为了澄清-我一直在寻找最佳方法,例如,比手动更新索引更优雅的方法。例如,在C ++中,我可以做到;iterator it = someList.begin();while (it != someList.end()){ if (shouldRemove(it)) it = someList.erase(it);}
3 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
另一种变化。因此,您可以获得可读性和良好的性能:
NSMutableIndexSet *discardedItems = [NSMutableIndexSet indexSet];
SomeObjectClass *item;
NSUInteger index = 0;
for (item in originalArrayOfItems) {
if ([item shouldBeDiscarded])
[discardedItems addIndex:index];
index++;
}
[originalArrayOfItems removeObjectsAtIndexes:discardedItems];
蓝山帝景
TA贡献1843条经验 获得超7个赞
这是一个非常简单的问题。您只是向后迭代:
for (NSInteger i = array.count - 1; i >= 0; i--) {
ElementType* element = array[i];
if ([element shouldBeRemoved]) {
[array removeObjectAtIndex:i];
}
}
这是非常常见的模式。
- 3 回答
- 0 关注
- 753 浏览
添加回答
举报
0/150
提交
取消