您的位置:首页 > 移动开发 > IOS开发

iOS 报错Collection <__NSArrayM: 0x7fdf0b8154c0> was mutated while being enumerated.'

2015-03-02 23:59 411 查看
顾名思义,在遍历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);

}

}];


参考自:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐