我已经使用 Core Data 设置了一个优雅的系统,每当模型对象的属性发生更改时,它都会使用键值观察自动反映在其关联视图中,但我在使用 undo 时遇到了问题。
当我删除模型对象时会出现问题。发生这种情况时,关联的视图与所有键值观察一起被销毁。用户突然决定删除是一个坏主意,并发出恢复模型对象的撤消命令。此时键值观察已被破坏,我似乎无法找到一种很好的方法来确定哪个模型对象已从死里复活并重新设置所有内容。
我想到的当前解决方案是注册 NSUndoManagerDidUndoChangeNotification,然后手动浏览我的核心数据模型对象并查看哪些没有关联的视图。我认为必须有一种方法可以知道哪个特定对象已被带回,但我认为这种方法会矫枉过正。
我还考虑过创建一个撤消组,在模型对象重新出现时重新添加已删除的视图,但我希望仅在可能的情况下保持我的撤消管理器与模型相关。
我想我正在寻找的解决方案是让撤消管理器说,“嘿!任何有兴趣的人都听好了!我刚刚做了一个撤消,这是已经复活的核心数据模型对象!用它做你想做的事!” 然后我设置视图,就好像创建了一个新的模型对象一样。
有什么想法或指导吗?