我有一个编辑视图控制器,我正在使用 NSUndoManager,它是我的持久性存储(核心数据项目)的一组。
我的应用程序的功能之一是与外部服务器同步。我想知道的是,如果我正在视图中编辑某些内容,同时应用程序正在与服务器同步,如果我改变主意并决定撤消当前编辑中的任何更改,它是否也会撤消同步期间所做的所有更改(如果它们是在撤消分组开始时进行的),还是只会撤消我自己所做的更改?
取决于您的实施。通常,撤消管理器会为您的事件打开一个撤消组并封装更改,请参阅 groupsByEvent。如果您使用辅助托管对象上下文进行后台同步并将上下文合并回主上下文
您必须确保禁用了撤消注册,请参阅disableUndoRegistration。
编辑:
这是一个小代码片段,您可以在单独的上下文中进行同步,而无需创建撤消操作
// create a child context with no undo manager
NSManagedObjectContext *context = [NSManagedObjectContext contextWithParent:self.managedObjectContext];
context.undoManager = nil;
[... do your synchronization with the child context...]
// merge into main context without generating undo actions
[undoManager disableUndoRegistration];
[context save:&error];
[managedObjectContext processPendingChanges];
[undoManager enableUndoRegistration];
// to prevent undo action beyond the synchronization to remove all undo actions
[undoManager removeAllActions];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)