2012-03-14 49 views
1

我在核心数据中有4个实体。比方说,实体A,B,C和D.这些都是关系如何:如何在核心数据中保存单个实体

一个< ----- >> B

乙< < ----->ç

B < < ---- >> D

问题是: 我在我的应用程序中有很多屏幕。现在,假设在第一个屏幕中,我对实体A进行了更改,并且目前我不调用保存在托管对象上下文(我只有一个托管对象上下文)。现在我对实体B进行了更改,现在我想将对实体B所做的更改保存到持久性存储中,但不希望我对A所做的更改被保存到现在。这是我的应用程序需要这样的。所以我想稍后保存实体A,或者根本不保存它。

总之,问题是,如何将实体单独保存到持久存储?我对此有很多想法,但无法找到办法做到这一点。我尝试使用核心数据提供的NSUndoManager,但它使事情变得非常复杂。

有关如何做到这一点的任何想法?

回答

2

让每个viewContoller使用它自己的一个单独的本地托管对象上下文。然后相应地将属性parentContext(NSManagedObjectContext的属性)设置为主环境(具有持久性存储的环境)或viewController层次结构中的另一个环境。查找WWDC2011 iOS5核心数据视频,其中讨论父/子managedObjectContexts。

听起来很混乱,你可能想要重新设计。

+0

除了Gobot的回答,此链接可能有所帮助:http://www.cimgf.com/2011/10/14/parent-watching-its-child/ – 2012-03-14 13:07:39

+0

我已经浏览过视频。亲子关系仅支持iOS 5.0以上版本。我的目标是iOS 4.3以上。我们错过了一些东西。这应该是一个共同的要求,而且一定是可能的。 – 2012-03-15 08:56:12

+1

4.3中仍然可以有多个MOC。但是你必须为每一个分配相同的NSPersistentStoreCoordinator。然后,在需要时,确保其他上下文重新获取更新的数据,无论是手动还是通过通知。 – Gobot 2012-03-15 12:57:01