我想在我的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];
但插入没有撤消......有没有办法实现这个目标?像交易一样?
答案 0 :(得分:4)
您是否可以使用子托管对象上下文进行保存(将其推送到父级,但不会触及磁盘上的文件),然后如果要撤消它,则对父级执行回滚操作?
我认为调用save
就像提交自上次保存以来所做的所有更改,而rollback
就像丢弃它们一样。一旦你提交了更改,它们就会存在于持久存储中,并且没有任何保留事务日志以支持回滚。
您能否解释一下您在交易过程中想要save
的原因?