为什么我在尝试删除tableview ios中的部分时出现断言错误

我有一个tableView和一些部分,都有一个页脚,然后我在Tableview本身有一个tableViewFooter.

如果我向下滚动到我的tableview的底部并删除最后一个项目(最后一个和最后一个)上面的任何部分中的最后一项(因此完全删除该部分),它会给我这个错误

2014-02-21 13:19:55.066 xxxx[5436:60b] *** Assertion failure in -[UIViewAnimation initWithView:indexPath:endRect:endAlpha:startFraction:endFraction:curve:animateFromCurrentPosition:shouldDeleteAfterAnimation:editing:], /SourceCache/UIKit/UIKit-2903.23/UITableViewSupport.m:2661
Uncaught exception: Cell animation stop fraction must be greater than start fraction

在endUpdates

这是我的代码

[self.tableView beginUpdates];
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    if(indexPath != nil){
        TableSection * sec = [self.sections objectAtIndex:indexPath.section];
        NSMutableDictionary *dic =[sec.items objectAtIndex:indexPath.row];

        Product* product = [dic valueForKey:PRODUCT];


        //removing the item in the section
        [sec.items removeObject:dic];

        //deleting item from products 
        NSMutableArray *temp = [NSMutableArray array];
        for (Product *p in self.dataCon.listPersister.products) {
            if ([p.product.objId isEqualToString: product.product.objId]) {
                [temp addObject:p];
            }
        }

        for (Product *p in temp) {
            [self.dataCon.listPersister.products removeObject:p];
        }


        //if it was the last object in section, delete the section else just delete the single row

        if(sec.items.count == 0)
        {


            [self.sections removeObject:sec];
            [self.footers removeObjectAtIndex:indexPath.section];
            [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section]  withRowAnimation:UITableViewRowAnimationFade];

        } else
        {

            [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
            USFooterView *footer = [self.footers objectAtIndex:indexPath.section];
            footer.totalLabel.text = [self.dataCon.listPersister getTotalForShopId:sec.title];
            self.footerView.totalLabel.text = [self.dataCon.listPersister getTotalForAllProducts];
        }

    }


    [self.tableView endUpdates];

我之前有相同的代码,只是没有我的tableView和表格部分有页脚,它工作的地方,所以我认为他们可能是问题,但我不完全确定这是它的表现的原因.

我看过这篇文章

UITableView tableFooterView may cause crash?

和它链接的帖子,但这对我没有帮助.

任何帮助表示赞赏:)

最佳答案 在else语句中,您从表视图中删除行:

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

但不是来自数据源.从数组中删除用作数据源的行,它应该可以工作.

点赞