NSFetchedResultsControllerDelegate在第二个视图控制器中(不触发?)

时间:2010-04-14 02:00:53

标签: iphone objective-c

我遇到的问题类似于此处描述的问题:NSFetchedResultsControllerDelegate not firing (我的第二个视图控制器上没有调用NSFetchedResultsControllerDelegate的委托)

我似乎无法得到拟议的解决方案。我有一个主视图,可以很好地加载来自Core Data的信息,但是当它推送一个单独的控制器(并将托管对象传递给它)时,委托方法将不会触发。我读过'mergeChangesFromContextDidSaveNotification',但我不明白如何同步两个管理对象和/或调用委托方法。

非常感谢任何帮助。谢谢, 麦克

1 个答案:

答案 0 :(得分:1)

请注意,我确实完全理解了您的问题,但NSFetchedResultsController仅在控制器监视的Core Data对象图部分发生更改时才调用其委托。简单地在两个视图控制器之间传递托管对象不会更改Core Data图本身,因此不会触发委托方法。

要激活代理,您必须更改fetchedResults控制器监控的 数据 。这意味着更改fetchedResults控制器获取的实体之一。您必须添加或删除实体的实例,或者您必须更改现有实体的属性或关系。

  

......但我不明白怎么做   同步两个管理对象   和/或获取委托方法   调用。

根据您的描述,您没有两个托管对象,只有一个从第一个视图控制器传递到下一个视图控制器。也许你是指托管对象上下文?

mergeChangesFromContextDidSaveNotification:

...是NSManagedObjectContext的一种方法,仅在需要组合来自两个单独上下文的数据时使用。这是一个高级操作,只有在尝试集成两个独立上下文的数据时才会使用。例如,当您将数据库更新为新版本时。