2012-10-16 44 views
0

我正在使用一個解析數據庫,並且需要currentUsers才能從中刪除它。我在UITableView中設置了一個返回currentUsers條目的PFQuery。這是我迄今爲止嘗試沒有成功的原因。deleteInBackground

- (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 
    } 
} 

拋出異常: 原因:無效更新:在部分0的行的無效數包含在現有段的行的更新後的數字(2)必須等於行數包含在更新(2)之前的那一部分中,加上或減去從該部分插入或刪除的行數(插入0,刪除1),加上或減去移入或移出該部分的行數(0移入,0搬出)。'

回答

0

你應該做的第一件事就是解決這個問題:

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

將其替換爲:

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

我不知道的第二部分。如果myObject與您從filteredBooks中刪除的對象相同,則完全不需要在完成塊中執行[tableView reloadData]。你能描述你想在那裏做什麼?

也有你的tableView加上不錯的更新動畫更好的性能,我會prefere使用表更新了,而reloadData這樣的:

[tableView beginUpdates]; 
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows] 
       withRowAnimation:UITableViewRowAnimationFade]; 
[tableView endUpdates]; 

,而不是[tableView reloadData];
當然你應該知道你是什麼去做