Collection 해결<br>was mutated while being enumerated.-

2082 단어
프로그램에서 이 알림이 나타날 때, 당신은 수조를 편리하게 하고, 이 수조 안의 내용을 동시에 수정하여 붕괴를 초래하기 때문입니다. 잘못된 방법은 다음과 같습니다.
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    
    AddSelectFuwushiCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.selected = NO;
     ResponseFuwushiListModel *model =_dataList[indexPath.row];
       if (cell.selectBtn.selected) {
       cell.selectBtn.selected = NO;
//           NSMutableArray *tempArray = [[NSMutableArray alloc]initWithArray:_selectedArr];
           for (ResponseFuwushiListModel *item in _selectedArr) {
               if ([item.userId isEqualToString:model.userId]) {
                   [_selectedArr removeObject:item];
               }
           }
           
           
    }else{
         cell.selectBtn.selected = YES;
        [_selectedArr addObject:model];
    }
    
}

이런 방법은 대수조selectedArr 훑어보고 조작하기
오늘 마침내 수조 안의 내용을 더욱 신속하게 삭제하고 수조 안의 내용을 수정하는 방법을 찾았다.
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    
    AddSelectFuwushiCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.selected = NO;
    ResponseFuwushiListModel *model =_dataList[indexPath.row];
    if (cell.selectBtn.selected) {
        cell.selectBtn.selected = NO;
        [_selectedArr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            ResponseFuwushiListModel *model1 = (ResponseFuwushiListModel*)obj;
            if ([model1.userId isEqualToString:model.userId]) {
                *stop = YES;
                if (*stop == YES) {
                    [_selectedArr removeObject:model1];
                }
            }
            if (*stop) {
                NSLog(@"array is %@",_selectedArr);
            }
        }];
    }else{
        cell.selectBtn.selected = YES;
        [_selectedArr addObject:model];
    }
    
}

Block을 이용하여 조작한 결과 Block 스트리밍이 for 스트리밍보다 20% 정도 빠르다는 것을 발견했다. 이 원리는 다음과 같다. 부합되는 조건을 찾은 후에 스트리밍을 멈추고 수조의 내용을 수정하는 방법은 매우 간단하고 효과적이다.

좋은 웹페이지 즐겨찾기