我有一个适用于iOS的通用核心数据应用。每次更改某些内容时,我都会从NSManagedContext中调用save,因此所有更改都会移动到数据库中。
据我了解,我只能撤消托管上下文的更改,但不能撤消数据库中的更改。我是对的吗?
我想要的是立即将所有更改提交到数据库并能够撤消las操作。这可能吗?
我看到的唯一选项是不提交最后一个更改,即保留NSManagedContext中的最后一个更改,因此我可以撤消该更改。但是这个想法存在问题,如果程序崩溃或用户进行备份(使用iTunes或iCloud),那么最后一次更改将消失。你是否同意我的观点?如何在数据库中始终提交数据,同时可以撤消上次更改?据我了解,使用Core Data是不可能的。我希望我错了。
嗯,我想知道您对此的看法。感谢。
答案 0 :(得分:-2)
是的,可以通过NSUndoManager
,手动关联到NSManagedContext
:
NSUndoManager *undoManager = [[NSUndoManager alloc] init];
[managedObjectContext setUndoManager:undoManager];
[undoManager release];
查看此帖子:http://www.ioslearner.com/undo-redo-support-core-data-nsundomanager/。您可以在选择和撤消/重做时轻松修改要保存的代码。