核心数据删除错误

时间:2012-07-12 12:19:20

标签: ios core-data nsfetchedresultscontroller

尝试从连接到获取结果控制器的tableview中删除行时出现以下错误:

*断言失败 - [UITableView _endCellAnimationsWithContext:],/ SourceCache / UIKit_Sim / UIKit-1914.84 / UITableView.m:1037 2012-07-12 13:11:19.921 Chef [28843:12203] * 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第0节中的行数无效。包含的行数更新后的现有部分(20)必须等于更新前该部分中包含的行数(20),加上或减去从该部分插入或删除的行数(0插入,1删除)和加上或减去移入或移出该部分的行数(0移入,0移出)。'

我的代码如下。

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {

    // Delete the record from the DB
    RecipeCategory *objectToBeDeleted = [self.fetchedResultsController objectAtIndexPath:indexPath];
    [self.context deleteObject:objectToBeDeleted];

    // Delete the row from the data source
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];


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

使用获取请求计数和方法 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)部分,我已经尝试记录了DB记录的数量,以及之前表中的行数和在行[self.context deleteObject:objectToBeDeleted];之后,它们都从20减少到19。

请帮忙!

编辑:PS错误发生在deleteRowsAtIndexPath方法。

1 个答案:

答案 0 :(得分:1)

事实证明,下面的代码行是对需求的过剩。我想NSFetchedResultsController也会处理它。我还必须为NSFetchedResultsController实现委托方法。

// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];