Estoy usando la idea GenericTableViewController
de Matt Gallagher para controlar mi UITableViews
. Mi fuente de datos es NSFetchedResultsController
.¿Cómo puedo hacer deleteRowsAtIndexPaths: trabajar con GenericTableViewController?
http://cocoawithlove.com/2008/12/heterogeneous-cells-in.html
todo está funcionando bien, hasta que lo intente eliminar una célula.
tengo el siguiente código en mi Vista Controlador:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the managed object.
NSManagedObjectContext *context = [wineryController managedObjectContext];
[context deleteObject:[wineryController objectAtIndexPath:indexPath]];
NSError *error;
if (![context save:&error]) {
// Handle the error.
}
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
La última línea se estrella con la explicación más detallada en la consola:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (5) must be equal to the number of rows contained in that section before the update (5), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).'
OK, entiendo lo que está diciendo. ... una fila no se borra (supongo) porque no estoy reenviando un mensaje al lugar correcto (ya que he movido un código de su ubicación "normal") ... ¿alguien tiene alguna idea de cuál? Estoy totalmente perplejo en este caso.
+1 Muchas gracias por la respuesta. –
Tiene permiso para modificar el origen de datos antes del bloque de animación. El error que vio indica que no ha cambiado la fuente de datos antes de animar la eliminación. Asegúrese de que la fuente de datos esté en el estado final (después de las eliminaciones) antes de animar la eliminación de esas filas. – Mark
Siempre me olvido de esto ... ¿por qué el código de la plantilla XCode no incluye estas líneas? – Echelon