Q:

deleteInBackground

I'm using a Parse DB and need currentUsers to be able to delete from it. I have set up a PFQuery in a UITableView which returns the currentUsers entries. This is what i have tried so far without success.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source

        [filteredBooks removeObjectAtIndex:indexPath.row ];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation: UITableViewRowAnimationFade];

        PFObject *myobject = [PFObject objectWithClassName:@"Books"];
        [myobject deleteInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (succeeded) {

                [self.tableView reloadData];
            }

        }];

    }
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
       // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}

it throws an exception: 
 reason: 'Invalid update: invalid number of rows in section 0.  The number of rows contained in an existing section after the update (2) must be equal to the number of rows contained in that section before the update (2), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'

A:

first thing you should do is to fix this:
[filteredBooks removeObjectAtIndex:indexPath.row ];<br>
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                 withRowAnimation: UITableViewRowAnimationFade];

replace it with:
[filteredBooks removeObjectAtIndex:indexPath.row ];
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                 withRowAnimation: UITableViewRowAnimationFade];
[tableView endUpdates];

I am not sure about the second part. If myObject is the same object as you removed from filteredBooks then you don't have to do [tableView reloadData] in the completion block at all. Can you describe what do you want to do there?
Also to have better performance in your tableView plus nice update animations I would prefere to use table updates instead of reloadData like this:
[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows]
                 withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];

instead of [tableView reloadData];
but of course you should know what you are going to do

