在核心数据中保存上下文后,我可以撤消操作吗?

时间:2012-10-14 17:58:44

标签: ios core-data nsundomanager

我有一个适用于iOS的通用核心数据应用。每次更改某些内容时,我都会从NSManagedContext中调用save,因此所有更改都会移动到数据库中。

据我了解,我只能撤消托管上下文的更改,但不能撤消数据库中的更改。我是对的吗?

我想要的是立即将所有更改提交到数据库并能够撤消las操作。这可能吗?

我看到的唯一选项是不提交最后一个更改,即保留NSManagedContext中的最后一个更改,因此我可以撤消该更改。但是这个想法存在问题,如果程序崩溃或用户进行备份(使用iTunes或iCloud),那么最后一次更改将消失。你是否同意我的观点?如何在数据库中始终提交数据,同时可以撤消上次更改?据我了解,使用Core Data是不可能的。我希望我错了。

嗯,我想知道您对此的看法。感谢。

1 个答案:

答案 0 :(得分:-2)

是的,可以通过NSUndoManager手动关联到NSManagedContext

NSUndoManager *undoManager = [[NSUndoManager  alloc] init];
[managedObjectContext setUndoManager:undoManager];
[undoManager release];

查看此帖子:http://www.ioslearner.com/undo-redo-support-core-data-nsundomanager/。您可以在选择和撤消/重做时轻松修改要保存的代码。