删除分组表的行时出现问题

时间:2011-05-20 14:00:19

标签: iphone objective-c xcode4

每个人都

我正在使用以下代码删除rgouped表视图中的行

- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath {

    if(editingStyle == UITableViewCellEditingStyleDelete) {

        //Get the object to delete from the array.
        insertUpdateDelete *objInsertUpdateDelete = [appDelegate.arrObjects objectAtIndex:indexPath.row];
        [appDelegate DeleteRecord:objInsertUpdateDelete];

        //Delete the object from the table.
        [tableView1 deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }
}


    }

但它崩溃了

[tableView1 deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

崩溃日志是:

  

2011-05-20 19:21:20.233   iICS [10744:207] * 断言失败   in - [UITableView   _endCellAnimationsWithContext:],/ SourceCache / UIKit_Sim / UIKit-1448.89 / UITableView.m:995           2011-05-20 19:21:20.235 iICS [10744:207]

 *** Terminating app due to uncaught exception
     

'NSInternalInconsistencyException',   原因:'无效更新:无效   第0节中的行数   一个包含的行数   更新后的现有部分(3)   必须等于行数   包含在该部分之前   更新(3),加号或减号   从中插入或删除的行数   部分(0插入,1删除)。'

任何哥们可以帮帮我吗?提前谢谢

3 个答案:

答案 0 :(得分:1)

在致电deleteRowsAtIndexPaths:之前,请确保您的数据源反映了您所做的更改。我看到你正在调用[appDelegate DeleteRecord:objInsertUpdateDelete];但是如果你的数据源没有直接从appDelegate获取它的记录并且从你的类中的某个数组中获取它们,你还需要从该数组中删除它。

作为旁注,您使用app delegate的设计模式可能就像是“泥球”。 Is it good practice to use AppDelegate for data manipulation and Handling?

答案 1 :(得分:0)

您需要先检查您要删除的行是否是某个部分中的唯一行。

答案 2 :(得分:0)

查看您的方法:

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

此方法是否始终返回正确的行数?看来你不是从支持你的部分的数据源中删除行。

编辑: 你可能正在进行删除,但是在你的表的dataSource要求新的rowcount时它还没有完成(或提交)。您可能需要延迟[tableView deleteRowsAtIndexPath:],直到数据库提交为止。