controllerDidChangeContent:每次在Core Data中创建ManagedObject时调用

时间:2011-10-20 21:55:35

标签: core-data tableview reload nsfetchedresultscontroller

我有一个使用NSFetchedResultsController的tableview来从Core Data存储加载数据,我正在实现controllerDidChangeContent:用新数据(从远程源加载)更新表,但是,委托方法controllerDidChangeContent:正在被调用当我创建一个托管对象时,我的理解是,只有在我保存消息时才会调用它:在相应的托管对象上下文中。

是否有要设置的参数来启用此功能?

我正在下载包含许多项目的XML以插入到tableview中,因为我正在动态创建托管对象并动态添加信息,因此我需要在其中显示其中的一些信息。表视图单元格。

因此,通过controllerDidChangeContent:每当我创建一个新的Managed Object时调用,我需要的属性才能使表视图单元格尚未就绪。

任何见解都会很棒。

感谢。

1 个答案:

答案 0 :(得分:2)

您无法禁用NSFetchedResultsController的此行为。为了防止这种情况,您可以创建第二个NSManagedObjectContext,在那里进行所有插入,更改和删除,最后将两个上下文与mergeChangesFromContextDidSaveNotification:

合并

在下载XML文件时,您还应该在后台线程中执行此操作,以防止UI被用户输入阻止。