2

CoreData を使用してアプリケーション データ モデルを管理しています。ユーザーが行った変更を保存または破棄できるように、編集ビュー コントローラーで子マネージド オブジェクト コンテキストを使用します。

次のように子コンテキストを作成します。

NSManagedObjectContext* mainMoc = <my main context>;
NSManagedObjectContext* editMoc = [[NSManagedObjectContext alloc] init];
editMoc.parentContext  = mainMoc;

ユーザーが「完了」ボタンをタップすると、次のように変更を保存します。

[editMoc save:&error]

ユーザーが「キャンセル」をタップすると、editMoc コンテキストが破棄されます。

質問は次のとおりです。アプリ全体で状態の保存と復元を使用しており、アプリがバックグラウンドになったときに、さらに復元するために変更を含む editMoc コンテキストを保存したいと考えています。ユーザーが変更を保存するか破棄するかをまだ決定していないため、editMoc を mainMoc とマージしたくありません。

NSCoding プロトコルを使用して editMoc をシリアル化しようとしましたが、登録されたオブジェクトはこの方法で保存されません。私もparentContextを変更しようとしましたが、これは例外をスローします。

子コンテキストと状態保存を使用するのが一般的な方法であるため、上記のタスクを達成するための優れた方法があるはずです。

私のプロジェクトは iOS 6.0 以降で実行されます。

4

1 に答える 1