当我的 iPhone 应用程序崩溃时,我在控制台中收到此错误:
*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-2372/UITableView.m:1070
当到达这行代码时它崩溃并给我这个:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
[tableView endUpdates];
}
关于我的应用程序的一些细节以及我是如何做到这一点的。我有一个带有表格视图的视图控制器,它显示我的核心数据对象。我有这个视图设置来显示来自两个实体的数据,所以表部分 1 显示来自实体的对象,然后部分 2 显示来自我的第二个实体的对象。
这就是我的问题开始的地方。虽然这已经很好地解决了,但我可以推送我的下一个视图控制器,并将对象添加到我的第一个实体并立即弹出回我的 tableviewcontroller 没有问题。但是,如果我尝试将对象添加到第二个实体,则在返回到我的 tableviewcontroller 时,它会崩溃,如上所述。
我无法弄清楚是什么原因造成的,所以我不确定从哪里开始寻找。
来自控制台的一些额外错误信息:
CoreData:错误:严重的应用程序错误。在调用 -controllerDidChangeContent: 期间,从 NSFetchedResultsController 的委托中捕获了一个异常。无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (2) 必须等于更新前该节中包含的行数 (2),加上或减去数字从该部分插入或删除的行数(1 插入,0 删除)加上或减去移入或移出该部分的行数(0 移入,0 移出)。与用户信息(空)
代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSInteger rows;
id <NSFetchedResultsSectionInfo> sectionInfoAccounts = [[fetchedResultsControllerAccounts sections] objectAtIndex:0];
id <NSFetchedResultsSectionInfo> sectionInfoCosts = [[fetchedResultsControllerCosts sections] objectAtIndex:0];
if (section == 0) rows = [sectionInfoAccounts numberOfObjects];
else if (section == 1) rows = [sectionInfoCosts numberOfObjects];
return rows;
}