eliminar object de NSMutableArray

Tengo dos elementos:

NSMutableArray* mruItems; NSArray* mruSearchItems; 

Tengo un UITableView que contiene básicamente los elementos mruSearchItems , y una vez que el usuario deslice y elimine una fila específica, necesito encontrar TODAS las coincidencias de esa cadena dentro de los mruItems y eliminarlas de allí.

No he usado NSMutableArray suficiente y mi código me da errores por alguna razón:

 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { //add code here for when you hit delete NSInteger i; i=0; for (id element in self.mruItems) { if ([(NSString *)element isEqualToString:[self.mruSearchItems objectAtIndex:indexPath.row]]) { [self.mruItems removeObjectAtIndex:i]; } else { i++; } } [self.searchTableView reloadData]; } 

}

Error: veo ahora que algunas de las cadenas no están entre comillas (sin embargo, las de UTF8)

 Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x1a10e0> was mutated while being enumerated.( "\U05de\U05e7\U05dc\U05d3\U05ea", "\U05de\U05d7\U05e9\U05d1\U05d5\U05df", "\U05db\U05d5\U05e0\U05df", "\U05d1 ", "\U05d1 ", "\U05d1 ", "\U05d1 ", Jack, Beans, Cigarettes )' 

Obtiene una exception porque está mutando un contenedor mientras itera sobre sus elementos.

removeObject: hace exactamente lo que está buscando: eliminar todos los objects que son iguales al argumento.

 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle != UITableViewCellEditingStyleDelete) return; NSString *searchString = [self.mruSearchItems objectAtIndex:indexPath.row]; [self.mruItems removeObject:searchString]; [self.searchTableView reloadData]; } 

No puede editar la colección mientras se enumera a través de ella, en lugar de eso, almacene los índices y, a continuación, elimínelos luego recorriendo su matriz de índices.