删除行时发生的Tableview错误很少发生-核心数据和FetchedResultsController

时间:2018-09-02 15:55:36

标签: ios swift core-data tableview nsfetchedresultscontroller

我正在使用一个由NSFetchedResultsController填充的表格视图。该表显示列表。列表实体与任务具有一对多关系。然后是一个音符实体,它与任务具有一对一的关系。介绍了笔记实体和与任务的关系之后,我得到了这个断言错误

  

错误:严重的应用程序错误。在核心数据更改处理期间捕获到异常。这通常是NSManagedObjectContextObjectsDidChangeNotification的观察者内部的错误。更新无效:第0节中的行数无效。更新(1)之后,现有节中包含的行数必须等于更新(3)前该节中包含的行数,再加上或减去该数字从该部分插入或删除的行数(已插入0,已删除1),加上或减去移入或移出该部分的行数(移入0,移出0)。与userInfo(空)   CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获到异常。这通常是NSManagedObjectContextObjectsDidChangeNotification的观察者内部的错误。更新无效:第0节中的行数无效。更新(1)之后,现有节中包含的行数必须等于更新(3)前该节中包含的行数,再加上或减去该数字从该部分插入或删除的行数(已插入0,已删除1),加上或减去移入或移出该部分的行数(移入0,移出0)。与userInfo(空)   2018-09-02 12:41:37.856931 + 0500 List24 [26505:860491] *由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效的更新:第0节中的行数无效。行数更新(1)之后在现有节中包含的行数必须等于更新(3)之前在该节中包含的行数,加上或减去从该节插入或删除的行数(已插入0,已删除1)加上或减去移入或移出该部分的行数(移入0,移出0)。”   * 首先抛出调用堆栈:

此错误从未发生过。但是,这确实很少。发生了两次,但我不知道是什么原因引起的。

注释与任务具有一对一关系。并且删除是在列表和任务之间级联的。因此,如果我删除列表,它应该删除任务,也应该删除注释。

任何建议或技巧,我都可以尝试一劳永逸地修复。谢谢!

1 个答案:

答案 0 :(得分:0)

  

无效更新:第0部分中的无效行数。

     

更新(1)之后现有节中包含的行数必须等于更新(3)之前该节中包含的行数,加上或减去从该节中插入或删除的行数(已插入0个,删除了1个),再加上或减去移入或移出该部分的行数(移入0,移出0)。

UITableView(我认为是iOS)似乎是一项要求,如果您使用.beginUpdates().endUpdates(),则应该致电tableView.deletedRows(..)&co以后正确的时间与您从numberOfRows(..)返回的时间相对应。