CoreData:如何在未保存的上下文中保留特定对象并保存其他对象?

时间:2012-11-19 11:53:24

标签: objective-c core-data ios4

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

你无法在同一个MOC中无差别地保存。保存MOC始终会将所有内容保存在其中。

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

答案 2 :(得分:0)

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

  • 一个使用默认配置和mainContext
  • 第二个(同一个NSManagedObjectModel的新实例,new NSPersistentStore(inMemory)和新的NSPersistenStoreCoordinator)