usando editActionsForRowAtIndexPath para eliminar una fila "Error interno UITableView"

Necesito crear una acción en editActionsForRowAtIndexPath para eliminar una fila de una tabla. Después de algunas investigaciones en internet, llegué a este código:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { let remove = UITableViewRowAction(style: UITableViewRowActionStyle.Destructive, title: "Remover", handler: { (action: UITableViewRowAction, indexPath: NSIndexPath) -> Void in self.tableData.removeObjectAtIndex(indexPath.row) tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic) }) return [remove] } 

pero ahora tengo este error

Error interno UITableView: no se puede generar un nuevo map de sección con un recuento de sección antiguo: 1 y un nuevo recuento de sección: 0

Cuando elimina una fila de UITableView , debe ocuparse de dos cosas.

Primero debe llamar a tableView.deleteRowsAtIndexPaths solo después de eliminar el object de la fuente de datos. Porque comprobará nuevamente el conteo y asegurará que el origen de datos resultante tenga un valor menor.

Ahora, lo segundo para recordar es que no. de la sección no puede ser 0 después de eliminar la última fila. Si devuelve 0 a numberOfSectionsInTableView , devuelva 1 al less en el recuento de filas vacío. Otra opción es eliminar el índice también cuando borra la última fila.

No es necesario usar el método 'editActionsForRowAtIndexPath' a less que aplique su propia vista de accesorios personalizada, pero de otro modo puede usar el gesto estándar de deslizar hacia la izquierda para eliminar filas y el delegado llamado es commitEditingStyle

 override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if editingStyle == .Delete { tableData.removeObjectAtIndex(indexPath.row) tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic) } else if editingStyle == .Insert { //edit cell } } //change the default 'Delete' text override func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath) -> String? { return "Show this instead of delete" } 

Haga deleteRowsAtIndexPaths o reloadData, pero no ambos.