내가 점점 오전 오류가 내가 NSGenericException
에서 이해하는 것이 열거하는 동안 내 배열에서 뭔가를 제거하고 있다는 점이다변이 된 배열 동안 열거되고
Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <CALayerArray: 0x7c85080> was mutated while being enumerated.'
입니다. 아직도 그것을 알고 주위를 둘러 보니 내 문제를 해결할 수없는 것 같습니다. 아래 코드는 다음과 같습니다.
-(void)tableView(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//Checks if message has been read. If message has not it updates the unreadMessages array
if ([unreadMessage containsObject:[NSString stringWithFormat:@"m%@",[[storage_array objectAtIndex:indexPath.row] objectForKey:@"id"]]] == TRUE && [[[storage_array objectAtIndex:indexPath.row] objectForKey:@"itemtype"] isEqualToString:@"message"] == TRUE){
//Unread
[unreadMessage removeObject:[NSString stringWithFormat:@"m%@",[[storage_array objectAtIndex:indexPath.row] objectForKey:@"id"]]];
[unreadMessage writeToFile:[self saveUnreadMessages] atomically:YES];
//Read
[readMessage addObject:[NSString stringWithFormat:@"m%@",[[storage_array objectAtIndex:indexPath.row] objectForKey:@"id"]]];
[readMessage writeToFile:[self saveReadMessages] atomically:YES];
[tableView reloadData];
}
else if ([unreadNewsletter containsObject:[NSString stringWithFormat:@"n%@",[[storage_array objectAtIndex:indexPath.row] objectForKey:@"id"]]] == TRUE && [[[storage_array objectAtIndex:indexPath.row] objectForKey:@"itemtype"] isEqualToString:@"newsletter"] == TRUE){
//Unread
[unreadNewsletter removeObject:[NSString stringWithFormat:@"n%@",[[storage_array objectAtIndex:indexPath.row] objectForKey:@"id"]]];
[unreadNewsletter writeToFile:[self saveUnreadNewsletters] atomically:YES];
//Read
[readNewsletter addObject:[NSString stringWithFormat:@"n%@",[[storage_array objectAtIndex:indexPath.row] objectForKey:@"id"]]];
[readNewsletter writeToFile:[self saveReadNewsletters] atomically:YES];
[tableView reloadData];
}
}
전화 그것은 for (... in ...) 루프에 있습니다. 너는 그것을 할 수 없다. –
이 코드가 실행되는 위치에 대한 추가 컨텍스트를 제공 할 수 있습니까? 변형 된 배열은 CALayerArray이며 일부 UI 업데이트에 대해 알려줍니다. 그리고 tableView reload를 제외하고는 아무 것도 볼 수 없습니다. 이 코드는 어디에서 발생합니까? –
이 코드는 내'- (void) tableView (UITableView *)에서 발생합니다. tableView didSelectRowAtIndexPath : (NSIndexPath *) indexPath' – BigT