核心数据,KVO和NSInternalInconsistencyException

时间:2010-07-09 00:16:14

标签: iphone cocoa core-data key-value-observing cocoa-design-patterns

我正在使用Core Data和KVO查找值的更改以触发对数据存储的保存。我有一个表格视图,搜索链接到NSFetchedResultsController。当搜索更改时,按下“搜索”按钮会生成新的结果控制器。当用户在结果表视图中选择项目时,用户输入详细信息视图并进行编辑。

这是我遇到问题的地方。当用户在我所做的单独UIControl中进行更改时,会通知详细视图,并且可以使用它从表视图将我推入视图堆栈时记住的NSFetchedResultsController来获取NSManagedObjectContext和保存。当我这样做时,我有时会收到以下错误:

Serious application error.  Exception was caught during Core Data change processing.  This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification.  no object at index 89 in section at index 0 with userInfo (null)
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'no object at index 89 in section at index 0'

我发现当我进行搜索时会发生这种情况,并且不在桌面顶部的对象会移到顶部。我隐约知道在我的脑海中可能出现了什么问题,但我会很感激如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

我弄清楚出了什么问题。我忘了取消旧的NSFetchedResultsController代表,也忘了释放NSFetchedResultsController。我的UITableView子类也通过委托回复NSFetchedResultsController的更新,并导致进行奇怪的调用。