在核心数据中的上下文之间共享非持久对象?

时间:2010-07-23 06:44:37

标签: objective-c iphone core-data nsmanagedobjectcontext

我想知道是否有办法在同一个线程中运行的两个或更多NSManagedObject个对象之间共享NSManagedObjectContext

我有以下问题:我通过应用程序中的所有代码共享一个主上下文,并为我发出的每个远程获取请求创建了几个不同的上下文。 (我创建了一个远程获取的自定义类,并在自己的NSManagedObjectContext中插入服务器中找到的所有对象)。这些获取请求可以同时运行,因为它们使用可能在不同时间结束的NSURLConnection个对象。如果同一个远程对象被不同的连接获取,我将在保存并将上下文与主要上下文合并时最终得到重复项。 (即,具有相同远程ID但不同objectID)的对象。

一种可能的解决方案是在创建每个对象后立即保存(并保持)但是我不能这样做,因为它可能有一些可能仍未填充的关系,并且不会在保存操作。

我真的很期待一种允许您在上下文之间共享对象的非持久性实例的方法。如果有人遇到这个问题并提出解决方案,我很高兴知道!

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我不认为你想做什么是可能的。我的意思是如果你想在不同的上下文之间共享更改,你必须使用通知并在保存或发生更改时合并它。但在你的情况下,我会说只使用1个上下文并保存到最后。或者不太优雅的方式:在应用程序中临时保存所有远程ID并在插入新的远程ID之前进行检查。在这种情况下,您可以继续使用多个上下文并在每次完成加载后保存。