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