2011-10-19 9 views
10

Tengo un par de NSMutableArrays que debo borrar al actualizar la vista. Sin embargo, cuando intento borrarlos con [array removeAllObjects];, mi TableView se cuelga debido a index beyond bounds error. Todo lo que hago con la actualización, es borrar las matrices y llamar a la misma función que en viewDidLoad para llenar la tabla. [tableView reloadData] no se llama hasta la última línea del método.Borrar NSMutableArray para una actualización

EDITAR: Es muy probable que el problema sea este: utilizo una extracción para actualizar lib externo, y cuando se desplaza hacia arriba y suelta la tabla, rebota y, por lo tanto, UITableView intenta cargar la siguiente celda, que no puede porque la matriz está despejada y todavía se está cargando.

Respuesta: removeAllObjects de las matrices, inmediatamente haga una self.tableView reloadData y luego continúe con el resto.

+0

nos muestran su código – Nekto

Respuesta

38

problema puede deberse a numberOfRowsInSection devolviendo un conteo y su matriz de fuentes de datos está vacía.

simplemente llame al [array removeAllObjects] y en numberOfRowsInSectionreturn [array count].

Espero que resuelva su problema. ¡¡¡La mejor de las suertes!!!

+0

Gracias a un hombre mucho :) – Supertecnoboff

+0

Es removeAllObjects igual comunicado de ese objeto? –

0

Cuando actualiza su matriz, primero compruebe si tiene el objeto o no &, luego reinicialice su matriz y libere una.

3

elimino las células de mi vista de tabla en la siguiente manner-

NSMutableArray* indexPathsToDelete = [[NSMutableArray alloc] init]; 
      for(unsigned int i = 0; i < [self.array count]; i++) 
      { 
       [indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
      } 

[self.tableView beginUpdates]; 
[self.array removeAllObjects]; 
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationLeft]; 
[self.tableView endUpdates]; 
[indexPathsToDelete release];