这个问题涉及我对如何使用核心数据撤消管理器以及如何将 NSManagedObject 恢复到编辑完成之前的状态缺乏了解。
我只是在学习有关 Core Data 的方法。我用动态访问器设置了我的 NSManagedObject 类。我执行一个返回多个 NSManagedObject 实体结果的提取。来自这些实体结果(名字、姓氏)中的每一个的内容都被放入一个表格视图中,然后用户从表格中挑选一个进行详细查看,然后进行编辑。
详细视图控制器接收一个指向所选 NSManagedObject 实体的指针。当用户编辑字段时,NSManagedObject 实体中的相应属性值也会更新。这似乎是管理这些更改的最干净的方法。
现在,我不想使用 save 提交更改,而是想提供一个取消编辑功能,该功能可以回滚到该实体的数据库中的内容。我真的只想恢复一个实体而不执行整个重新获取。
我尝试了回滚并尝试了 NSUndoManager(使用 beginUndoGrouping 和 endUndoGrouping),但这不起作用。我想我不明白回滚到底应该做什么。
但在任何情况下,我仍然希望仅在单个实体中恢复属性值(采用惰性方法仅获取需要的内容,即一个实体),以便我的详细视图控制器可以用正确的信息重新填充其视图. 现在它正在使用 NSManagedObject 实体值,其中包含已取消的已编辑值。
我想我可以通过创建 NSManagedObject 的副本来开始编辑过程。如果按下取消编辑按钮,我可以将其复制回原件。(我什至可以通过移动指针来用副本替换原件。但由于指针实际上已经通过了几个对象,我不确定如何管理副本上的保留编号。)
有没有人有任何其他建议?
谢谢