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

多个窗口的核心数据和单独的撤消管理器?

父/子 NSManagedObjectContext 不起作用

NSManagedObjectContext:自动更新与否?

声明 NSManagedObjectContext 时出错

CoreData 多 NSManagedObjectContext 保存通知说明