我有一个带有 ARC、故事板、支持 ios5+ 的 iPad 应用程序。
我有一个单独使用 NSFetchedResultsController 的 VC。VC 有两个指向两个不同实体的表视图。我有单条记录添加、更改、删除和移动在这个 VC 上运行良好的行。
我现在引入了一项新功能,使用户能够快速将多行添加到这些表格视图中。我通过提供从这个 VC 到新 VC 的 segue(模态)来做到这一点(我们称之为 quickAddVC)。用户在 quickAddVC 上输入数据,然后我转回(模态)到原始 VC。我在(我相信)再次为 VC 设置 NSFetchedResultsControllers 之前(通过备用调用)保存了新记录(我在 ViewDidUnload 中将它们设置为 nil)。
但是,我不断收到此不匹配错误。不知何故,无论我添加多少记录,它都会将 quickAddVC 发生的插入数量注册为 1 个插入,并且它以某种方式记住在我进行此比较之前 NSFetchedResultsControllers 中有多少记录。
错误:
*断言失败 -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-2372/UITableView.m:1070
didChangeObject 失败,name=NSInternalInconsistencyException 原因=无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (5) 必须等于更新前该节中包含的行数(2),加或减从该节插入或删除的行数(1 插入,0 删除)和加或减移入或移出该节的行数(0 移入,0 移出)。
关于我做错了什么或应该尝试的任何想法都会很有用。
我不知道如何让 NSFetchedResultsControllers 简单地忘记它的原始状态并从头开始重新启动,我认为这会为我解决这个问题。
我还没有发布任何代码,我想如果需要我可以发布很多,但希望这里有足够的内容来概述设计问题并获得一些想法。