NSManagedObjectContext:撤消保存操作?
Posted
技术标签:
【中文标题】NSManagedObjectContext:撤消保存操作?【英文标题】:NSManagedObjectContext: undo save-operation? 【发布时间】:2012-05-25 13:32:03 【问题描述】:我想撤消我的 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】:您能否使用子托管对象上下文进行保存(将其推送到父对象,但不触及磁盘上的文件),然后如果您想撤消它,则对父对象执行回滚?
我认为调用save
就像提交自上次保存以来所做的所有更改,而rollback
就像丢弃它们。一旦您提交了更改,它们就会在持久存储中,并且不会保留任何事务日志以支持回滚。
您能否详细解释一下为什么在交易过程中需要save
?
【讨论】:
以上是关于NSManagedObjectContext:撤消保存操作?的主要内容,如果未能解决你的问题,请参考以下文章
父/子 NSManagedObjectContext 不起作用