如何实现CloudKit撤消/重做

时间:2016-04-16 17:56:57

标签: cloudkit

我只是想知道是否有人更好地了解如何为CloudKit交易实施撤消/重做,或者他们是否看到了我的一些明显缺陷。

我创建了一个Mac应用程序,其中我使用CoreData作为本地存储和CloudKit。当CloudKit未被使用时,我使用CoreData的UndoManager进行撤销/重做,并且工作正常。

对于CloudKit,我会侦听由本地UndoManager发送的NSUndoManagerDidUndoChangeNotification,当我收到它时,我会向iCloud发送相反的操作。因此,如果原始文件为Add,我将发送Delete for undo,如果是Delete,则发送Add,如果是Update,则使用以前版本的数据进行更新。

同样重做。我监听NSUndoManagerDidRedoChangeNotification并将适当的事务发送到云端。

对于使用CloudKit的每个事务,我在本地事务开始时调用moc!.undoManager!.beginUndoGrouping(),并在从iCloud接收完同一事务时调用moc!.undoManager!.endUndoGrouping()。

但是,当这似乎分崩离析时,我常常会遇到这种情况。不知何故,开始和结束分组不同步。我试图只使用moc!.undoManager!.disableUndoRegistration()和moc!.undoManager!.enableUndoRegistration()包含撤消/重做的重要更改,但我仍然会收到错误,主要是" endUndoGrouping调用时没有匹配的开始&#34 ;

所以,如果有人对此发表评论那就太棒了。

0 个答案:

没有答案