这次在写代码中遇到这个问题,我遍历数组的时候同时又修改了数组中的内容,就报了如下的错误
Collection <__NSArrayM: 0x17424f510> was mutated while being enumerated.
在网上有很多解决方法,这个地方主要是利用block遍历的时候有个stop,当修改的时候就停止遍历,修改数组中的元素.在检测中发现block遍历比for遍历快20%左右,同时block能提供的参数更多比较方便操作.解决方式如下:
NSMutableArray*tempArray = [[NSMutableArrayalloc]initWithObjects:@"12",@"23",@"34",@"45",@"56",nil];
[tempArray enumerateObjectsUsingBlock:^(idobj,NSUIntegeridx,BOOL*stop) {
if([obj isEqualToString:@"34"]) {
*stop =YES;
if(*stop ==YES) {
[tempArray replaceObjectAtIndex:idx withObject:@"3333333"];
}
}
if(*stop) {
NSLog(@"array is %@",tempArray);
}
}];
承接APP,小程序,公众号开发. 性价比高.+V信:17723566468 有单子也可找我一起做哦