模组:我意识到这是这个问题的重复,你能关闭/删除它吗?
问问题
2563 次
2 回答
5
如果您不想创建临时或新数组,可以使用:
NSMutableArray *array = ...; // your mutable array
NSIndexSet *toBeRemoved = [array indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
// The block is called for each object in the array.
BOOL removeIt = ...; // YES if the element should be removed and NO otherwise
return removeIt;
}];
[array removeObjectsAtIndexes:toBeRemoved];
(但使用了一个临时NSIndexSet
的。)
备注:我的想法是,像 Richard J. Ross III 所建议的那样,“一次”删除所有匹配元素而不是在迭代期间单独删除每个元素可能更有效。
但一个简短的测试表明情况并非如此。在我的计算机上使用这两种方法从具有 1000000 个元素的数组中删除每个第二个元素所花费的时间几乎相同。
于 2012-11-06T20:22:57.437 回答
2
您可以使用 NSPredicate 来执行此操作,请参阅此 SO question and answer。
https://stackoverflow.com/a/129942/36984
苹果文档为此:
于 2012-11-06T20:16:40.203 回答