快速解决: Collection <__NSArrayM: 0x17424f510> was mutated while being enumerated.

这次在写代码中遇到这个问题,我遍历数组的时候同时又修改了数组中的内容,就报了如下的错误

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  有单子也可找我一起做哦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容