Вы должны удалить элемент из вашего источника данных self.routineArray
, затем удалить его из таблицы с помощью -deleteRowsAtIndexPaths:withRowAnimation:
, а затем удалить его из основного хранилища данных. Порядок важен, потому что вы не можете удалить его из tableView, если он все еще существует в вашем источнике данных, или возникнет исключение из-за того, что tableView не синхронизирован с количеством элементов, которые его dataSource.
В этом примере он сначала удаляется из хранилища данных, затем из источника данных, затем удаляется из tableView, что также должно работать.
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
PFObject *routine= [self.routineArray objectAtIndex:indexPath.row];
[routine deleteInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error) {
[self.routineArray removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
} else {
// There was an error saving the gameScore.
}
}];
}
}