2012-05-25 54 views
3

我想撤消对我的NSManagedObjectContext的保存操作;我一直认为,这是什么NSUndoManager是,但它好像撤消在保存操作不起作用......NSManagedObjectContext:撤消保存操作?

一个例子:

[[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

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

我想打电话save就像提交自上次保存以来所做的所有更改,rollback就像是放弃它们一样。一旦您提交了更改,它们就位于持久性存储中,并且没有保留事务日志以支持回滚。

你能否更详细地解释一下为什么你想在交易中间使用save

相关问题