从UITableViewController删除表格单元格导致崩溃?

时间:2015-03-26 16:17:01

标签: ios uitableview ios6

我在iOS应用程序中添加了以下代码以从UITableViewController中删除表格单元格,但是我收到有关删除的错误。

  -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
    if(editingStyle == UITableViewCellEditingStyleDelete){
        [self.toDoItems removeObjectAtIndex:indexPath.row];
        NSArray *indexPaths             = @[indexPath];

        [self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
    }

}

更新: toDoItems只是一个NSArray,我尝试了以下代码,但仍然没有工作:

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
    if(editingStyle == UITableViewCellEditingStyleDelete){
        NSArray *indexPaths             = @[indexPath];

        [self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
        [self.toDoItems removeObjectAtIndex:indexPath.row];
    }

}

错误信息在这里:

' NSInternalInconsistencyException',原因:'无效更新:第1部分中的行数无效。更新后的现有部分中包含的行数(1003)必须等于数字在更新(1004)之前包含在该部分中的行,加上或减去从该部分插入或删除的行数(0插入,0删除)和加或减移入或移出该部分的行数(0搬进来,0搬出去。'

Xcode 6.2 iOS6

我已经尝试了Deleting table cell causes crash

1 个答案:

答案 0 :(得分:0)

问题是您从数据模型中删除了错误的对象:

[self.toDoItems removeObjectAtIndex:indexPath.row];

这太简单了。您在此表中有多个部分。您需要一个区分这些部分的数据模型,并且需要从数据模型中的正确部分中删除正确的行,然后才能从表中删除相应的行。你不能单独看indexPath.row那样做;您需要构建数据模型,以便同时考虑indexPath.section