从NSArray中移除几件物品

时间:2013-02-02 12:18:53

标签: objective-c arrays nsarray range

这是我从JSON解析中简化的NSMutableArray:

{
main 
{ 
  array0, 
  array1,
  array2,
  array3,    <----- remove!
  array4,    <----- remove!
  array5,
  array6,    <----- remove!
  array7,    <----- remove!
  array8,
  ...,
}
}

我正在寻找删除单个数组项目的最佳方法,例如只有数组2,4,6,8; 另外,如果我需要删除数组3,4和6,7的COUPLES,总是可以吗?

编辑:这是第一个删除SINGLE项目的解决方案:

for (int i=0; i < [array count]; i = i+1) {
[array removeObjectAtIndex:i];
}

1 个答案:

答案 0 :(得分:2)

对我而言,您可以轻松地创建所有索引的索引集,以使用removeObjectsAtIndexes:删除和删除这些索引处的对象。

您可以从indexesOfObjectsPassingTest:获取所有偶数(或奇数)索引对象的索引。

NSMutableArray *array = // Your array where objects should be removed from
NSIndexSet *indexesToRemove = [array indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    return idx%2==0; // index is even (even objects get removed)
}];
[array removeObjectsAtIndexes:indexesToRemove];