我正在使用以下代码删除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删除)。'
答案 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:],直到数据库提交为止。