博客> iOS可变数组删除元素
iOS可变数组删除元素
2018-10-17 19:37 评论:0 阅读:659 maidi0219
ios 数组

1. [mutableArr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {     if (obj不符合某条件) {

       [mutableArr removeObject:obj];

    }

}]; 这种方式,删除一个元素时,正常。删除多个元素时,是异常的。(会出现索引跳位)

2. for(int i=0; i < [array count]; i++){         if(YES){             [array removeObjectAtIndex:i];             i--;         }

} 这种方式,会出现crash。

3. while(array.count>0)

{       obj = [array objectAtIndex:0];

    //判断处理

   …

   //remove

    [array removeObjectAtIndex:0]; 

} 这种同2. ------------ 最好还是把需要删除的内容,筛选出来放到一个array中,然后再把这些需要删除的统一从原始数组中删除。如下面这个网页提供的做法:

NSMutableArray *discardedItems = [NSMutableArray array];

SomeObjectClass *item;

for (item in originalArrayOfItems) {

    if ([item shouldBeDiscarded])

        [discardedItems addObject:item];

}

[originalArrayOfItems removeObjectsInArray:discardedItems];

收藏
0
sina weixin mail 回到顶部