当我的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)。与userInfo(空)


码:

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

最佳答案

您正在使用2个提取的结果控制器进行表视图:一个FRC用于表第0部分,一个FRC用于表第1部分。我在这里有点猜测,但可能是因为错误在

- (void)controller:(NSFetchedResultsController *)controller
   didChangeObject:(id)anObject
       atIndexPath:(NSIndexPath *)indexPath
     forChangeType:(NSFetchedResultsChangeType)type
      newIndexPath:(NSIndexPath *)newIndexPath


如果第二个FRC调用了该函数,则indexPath / newIndexPath的段部分为0(因为FRC只有一个段)。但是对应的表节是1。

因此,在调用insertRowsAtIndexPaths:...insertRowsAtIndexPaths:...等之前,必须将FRC索引路径映射到表视图的索引路径。

例如,在插入事件的情况下:

NSIndexPath *newIndexPath1 = [NSIndexPath indexPathForRow:newIndexPath.row inSection:1];
[self.tableView insertItemsAtIndexPaths:@[newIndexPath1]];


否则,将第二个实体的新对象作为第一个表视图部分的行插入,这会导致不一致异常。

关于iphone - UITableView CoreData断言失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12754379/

10-11 14:54