【问题标题】:CoreData: how to leave particular objects in context unsaved and save others?CoreData:如何不保存上下文中的特定对象并保存其他对象?
【发布时间】:2012-11-07 08:12:58
【问题描述】:

先决条件: 我在网络 API 中有 2 种方法:

  • 返回实体列表(只是基本信息:名称、id 等)
  • 返回有关实体的详细信息

要求只保存通过处理第二个请求(保存到 sqlite)创建的对象,不保存不完整的对象。 此外,“主”上下文应仅包含来自第一个请求的完整对象,任何其他“临时”上下文应包含所有其他对象。

我尝试创建两个 NSPersistentStoreCoordinator 实例并将它们用于不同类型的上下文,但似乎一个 NSManagedObjectModel 只能存在一个协调器(指针指向同一个地址)。

【问题讨论】:

    标签: objective-c core-data ios4


    【解决方案1】:

    如果我对您的理解正确,那么我认为您最好的选择是仅在您确定希望它保留在 Core Data 存储中时才创建托管对象。您可能需要另一层非托管对象来包含“非完整”实体的数据

    (这类似于 Java EE 编程中的 Data Transfer Objects。)

    【讨论】:

    • 感谢您的好建议,我已经考虑过这个解决方案,但仍然想知道在 CoreData 层上是否可行
    【解决方案2】:

    您不能在同一个 MOC 中随意保存。保存 MOC 总是会保存其中的所有内容。

    因此,您可以使用从不保存的单独 MOC,然后在准备好保存时将这些对象“移动”到主 MOC。

    【讨论】:

      【解决方案3】:

      完全解决我的问题的解决方案是创建两个核心数据堆栈的“分支”:

      • 具有默认配置和 mainContext 的一个
      • 第二个(相同 NSManagedObjectModel 的新实例,新 NSPersistentStore (inMemory) 和新的 NSPersistenStoreCoordinator )

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-02
        • 2019-04-10
        相关资源
        最近更新 更多