0

我有一个带有 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 简单地忘记它的原始状态并从头开始重新启动,我认为这会为我解决这个问题。

我还没有发布任何代码,我想如果需要我可以发布很多,但希望这里有足够的内容来概述设计问题并获得一些想法。

4

1 回答 1

1

只需重新发布将问题标记为已关闭的答案。

好的解决了这个问题。基本上我在错误的地方清除了 NSFetchedResultsControllers。通过在 segue 之前将它们设置为 nil 一切正常。我做了一个错误的假设,即当我再次返回时调用了 ViewDidLoad 方法,也调用了 ViewDidUnload 方法,但事实并非如此。

于 2012-10-09T07:54:15.483 回答