错误信息:
Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.
1.
NSMutableArray *tempArray = [[NSMutableArrayalloc]initWithObjects:@"12",@"23",@"34",@"45",@"56",nil];
[tempArray enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop) {
if ([objisEqualToString:@"34"]) {
*stop =YES;
if (*stop ==YES) {
[tempArrayreplaceObjectAtIndex:idxwithObject:@"3333333"];
}
}
if (*stop) {
NSLog(@"array is %@",tempArray);
}
}];
利用block来操作,根据查阅资料,发现block便利比for便利快20%左右,这个的原理是这样的:
找到符合的条件之后,暂停遍历,然后修改数组的内容
这种方法非常简单哟
2.
NSMutableArray
* arrayTemp = xxx;
NSArray
* array = [
NSArray
arrayWithArray: arrayTemp];
for
(
NSDictionary
* dic in array) {
if
(condition){
[arrayTemp removeObject:dic];
}
}
// - 把 arr2数组中的数据追加到 arr的后边 [arr addObjectsFromArray:arr2];
// - 把 arr2数组中的数据追加到 arr的最前边 NSRange range = NSMakeRange(0, arr2.count) NSIndexSet * set = [NSIndexSet indexSetWithIndexesInRange:<#(NSRange)#>] [arr insertObjects:arr2 atIndexes:set];
// -
从 deals 中 删除 temper 数组中的东西
[self.deals removeObjectsInArray:tempArray];
|