【问题标题】:controllerDidChangeContent: called every time I create a ManagedObject in Core DatacontrollerDidChangeContent:每次在 Core Data 中创建 ManagedObject 时调用
【发布时间】:2011-10-20 21:55:35
【问题描述】:

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

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

我正在下载一个 XML,其中包含许多要插入到 tableview 中的项目,我遇到了崩溃,因为我正在动态创建托管对象并动态附加信息,其中一些需要在表中显示查看单元格。

因此,controllerDidChangeContent: 每次创建新托管对象时都会被调用,但我需要制作表格视图单元格的属性尚未准备好。

任何见解都会很棒。

谢谢。

【问题讨论】:

    标签: core-data tableview reload nsfetchedresultscontroller


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多