NSManagedObjectContext:undo save-operation?

时间:2012-05-25 13:32:04

标签: core-data ios5 nsundomanager

我想在我的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];

但插入没有撤消......有没有办法实现这个目标?像交易一样?

1 个答案:

答案 0 :(得分:4)

您是否可以使用子托管对象上下文进行保存(将其推送到父级,但不会触及磁盘上的文件),然后如果要撤消它,则对父级执行回滚操作?

我认为调用save就像提交自上次保存以来所做的所有更改,而rollback就像丢弃它们一样。一旦你提交了更改,它们就会存在于持久存储中,并且没有任何保留事务日志以支持回滚。

您能否解释一下您在交易过程中想要save的原因?