2012-03-14 13 views
1

コアデータに4つのエンティティがあります。コアデータに個々のエンティティを保存する方法

< ----- >> B

B < < -----> C

:のは、これらの関係はどのようにしているA、B、CとDの実体を言ってみましょうB < < ---- >>

問題は次のとおりです。 私のアプリケーションにはたくさんの画面があります。今、最初の画面で、エンティティAに変更を加え、現在はマネージドオブジェクトコンテキストでsaveを呼び出さないとします(マネージオブジェクトコンテキストは1つしかありません)。今私はエンティティBに変更を加え、今はエンティティBの変更を永続ストアに保存したいが、私が行った変更を今まで保存したくない。このような私のアプリの要件です。だから私はエンティティAを後で保存したい、あるいはおそらくそれを保存しないことがあります。

つまり、エンティティを永続ストアに個別に保存する方法は問題です。私はこれについてたくさん考えましたが、これを行う方法を見つけることができませんでした。コアデータが提供するNSUndoManagerを使ってみましたが、実際には複雑になりました。

どのようにすればいいですか?

答えて

2

各viewControllerは、独自のローカル管理対象オブジェクトコンテキストを使用します。それに応じて、メインコンテキスト(永続ストアを持つコンテキスト)またはviewController Hierarchyの別のコンテキストのいずれかに応じて、parentContext(NSManagedObjectContextのプロパティ)を設定します。親/子のmanagedObjectContextについて語るWWDC2011 iOS5 Core Dataビデオを調べます。

音がジャンパーのように聞こえますが、あなたは再設計を目指したいと思うかもしれません。このリンクは役立つかもしれGobotの答えに加えて

+0

:http://www.cimgf.com/2011/10/14/parent-watching-its-child/ –

+0

は、私はすでにビデオを通じて行っていました。親子関係は、iOS 5.0以降でのみサポートされます。私は上記のiOS 4.3をターゲットにしています。欠けているものがいくつかあります。これは一般的な要件であり、間違いなく可能でなければなりません。 –

+1

4.3でも、複数のMOCを使用できます。しかし、それぞれに同じNSPersistentStoreCoordinatorを割り当てる必要があります。次に、必要に応じて、他のコンテキストが更新されたデータを手動または通知を通じて再フェッチすることを確認します。これのために+1 – Gobot