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 回答