iOS數(shù)組異常:NSGenericException,Collection <__NSArrayM: 0x61800024f7b0> was mutated while being enumerated.'

崩潰日志:*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x61800024f7b0> was mutated while being enumerated.'
這是由于你一邊便利數(shù)組,又同時(shí)修改這個(gè)數(shù)組里面的內(nèi)容,導(dǎo)致崩潰,
解決方法如下
方法一

NSMutableArray * tempArr = xxx; 

    NSArray * array = [NSArray arrayWithArray: tempArr];  

    for (NSDictionary * dic in array) {        

        if (OK){            

            [tempArr removeObject:dic];

        }       

    }

方法一就是重新創(chuàng)建一個(gè)和你便利的數(shù)組一模一樣臨時(shí)數(shù)組,便利這個(gè)臨時(shí)數(shù)組,來修改你自己的所便利的原數(shù)組
方法二

NSMutableArray *tempArr = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5", nil];

    [tempArr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

        if ([obj isEqualToString:@"3"]) {

           *stop = YES;

            if (*stop == YES) {

                [tempArr replaceObjectAtIndex:idx withObject:@"想改啥"];

            }

        }

        if (*stop) {

            NSLog(@"array is %@",tempArr);

        }

    }];

block 便利比for便利效率高,因?yàn)閒or便利,不管是否完成修改操作,還是要把所有的數(shù)組便利一遍,而block便利遇到滿足的條件就停止便利,執(zhí)行修改操作,推薦使用block哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容