3

NSManagedObjectContextの保存操作を元に戻したいのですが。それがNSUndoManagerの目的だといつも思っていましたが、保存操作を元に戻すのはうまくいかないようです...

例:

[[NSManagedObjectContext MR_contextForCurrentThread] setUndoManager:[NSUndoManager new]];
[[NSManagedObjectContext MR_contextForCurrentThread].undoManager beginUndoGrouping];
MyDataObject *mdo = [MyDataObject MR_createInContext:[NSManagedObjectContext MR_contextForCurrentThread]];
mdo.name = @"...";
[[NSManagedObjectContext MR_contextForCurrentThread] save:nil];
[[NSManagedObjectContext MR_contextForCurrentThread].undoManager endUndoGrouping];
[[NSManagedObjectContext MR_contextForCurrentThread].undoManager undo];

しかし、挿入は元に戻されません...これを達成する方法はありませんか?トランザクションのように?

4

1 に答える 1

4

子管理対象オブジェクトコンテキストを使用して保存を実行し(親にプッシュしますが、ディスク上のファイルにはアクセスしません)、元に戻す場合は親でロールバックを実行できますか?

呼び出しsaveは、最後の保存以降に行ったすべての変更をコミットするようなものであり、rollbackそれらを破棄するようなものだと思います。変更をコミットすると、それらは永続ストアにあり、ロールバックをサポートするためにトランザクションログを保持するものは何もありません。

save取引の途中でが必要な理由についてもう少し説明していただけますか?

于 2012-05-29T11:26:24.353 に答える