博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 报错Collection <__NSArrayM: 0x7fdf0b8154c0> was mutated while being enumerated.'
阅读量:4120 次
发布时间:2019-05-25

本文共 806 字,大约阅读时间需要 2 分钟。

顾名思义,在遍历NSMutableArray的时候对其进行了操作.

1. 最简单的方法是创建一个新的相同的数组,一个用来进行遍历,一个进行操作.

错误写法是:

NSMutableArray *dbArray = [....];    for (... in dbArray) {            if (.....) {                [dbArray removeObjectAtIndex:.];            }        }
正确的写法是:

NSMutableArray *dbArray = [....];NSArray *tempArray = [NSArray arrayWithArray:dbArray];    for (... in tempArray) {            if (.....) {                [dbArray removeObjectAtIndex:.];            }        }
参考自:

2.或者使用block遍历 符合条件后暂停遍历,然后修改内容
NSMutableArray *tempArray = [[NSMutableArray alloc]initWithObjects:, nil]; [tempArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { if (....) { *stop = YES; if (*stop == YES) { [tempArray replaceObjectAtIndex:idx withObject:@"3333333"]; } } if (*stop) { NSLog(@"array is %@",tempArray); } }];
参考自:

转载地址:http://esnpi.baihongyu.com/

你可能感兴趣的文章
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>
tp5封装通用的修改某列值
查看>>
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>
phpstorm 集成 xdebug 进行调试
查看>>
npm和node升级的正确方式
查看>>
laravel事务
查看>>
springcloud 连续请求 500
查看>>
vue复用新增和编辑表单
查看>>
Ubuntu 16.04 apt-get更换为国内阿里云源
查看>>
laravel部署到宝塔步骤
查看>>
小程序获取access_token
查看>>
navicat远程连接mysql数据库
查看>>
tp5令牌数据无效 解决方法
查看>>
自己的网站与UCenter整合(大致流程)
查看>>
laravel 制作通用的curd 后台操作
查看>>