0

親ビューコントローラの変更に影響を与えずにビューコントローラで行ったすべての変更を元に戻すことはできますか? btw。それらは同じmanagedObjectContextを使用しています。 ps。私は2つのエンティティAとBを持っています.AはBと多対多の関係を持っています。VCAはいくつかの変更をAで実行するために使用されます。ビューコントローラVCはBでいくつかの変更を実行するために使用されます。VCAはVCBの親ビューコントローラです。ビューコントローラで行われたすべての変更を元に戻す

+0

あなたはどのような変更について話していますか?あなたは何のデータを変更していますか、それはどこに住んでいますか? – strings42

答えて

1

新しいコンテキストを作成する必要はありません。あなたは、子ビューコントローラを離れるとき、あなたは後者の場合のいずれか

[managedObjectContext save:&error]; 

または

[managedObjectContext rollback]; 

のオプションがあり、すべてのあなたの新しいエンティティインスタンス、データの修正などは破棄されます。

+0

ロールバックすると、コンテキスト内のすべての変更が元に戻されます。親と子が同じコンテキストでコントローラを表示すると、それを確認できませんでした。 –

+0

いいえ。最後の保存**以降のすべての変更**をロールバックします。子ビューコントローラを起動する前に保存するだけです。 – Mundi

+0

親ビューコントローラに戻ると、保存された変更を元に戻すことができませんでした。 –

1

子ビューコントローラ用に新しいNSManagedObjectContextを作成して、アンドゥを添付する必要があります。 NSManagedObjectContextは非常に軽く、非常にコストがかかりません。

+0

はい、それは解決策ですが、管理対象のobjを1つのコンテキストから作成したものにコピーする必要があります。 –

+0

コピーしませんが、objectIdを渡します。私はあなたのための他の解決策はないと思います。 –

+0

これを後で試してみます。 –

関連する問題