从多个中还原一个获取的实体 - 核心数据

时间:2011-04-23 04:05:32

标签: core-data nsundomanager

这个问题考虑到我对如何使用核心数据撤销管理器以及如何在编辑完成之前将NSManagedObject恢复到其状态缺乏了解。

我正在学习Core Data的方法。我的NSManagedObject类设置了动态访问器。我执行一个返回几个NSManagedObject实体结果的提取。将每个实体结果(名字,姓氏)中的内容放入表格视图中,然后用户从表格中选择一个以获取详细视图,然后进行编辑。

详细视图控制器接收指向所选NSManagedObject实体的指针。当用户编辑字段时,NSManagedObject实体中的相应属性值将更新。这似乎是管理这些变化的最简洁方法。

现在,我想提供一个取消编辑功能,回滚到该实体的数据库中,而不是使用save提交更改。我真的只想恢复一个实体,而不是执行整个重新获取。

我尝试了回滚,我尝试了NSUndoManager(使用beginUndoGrouping和endUndoGrouping),这是行不通的。我不认为我理解回滚应该做什么。

但无论如何,我仍然希望仅在单个实体中恢复属性值(采用惰性方法仅获取所需内容,这是一个实体),以便我的详细视图控制器可以重新填充其视图正确的信息。现在它正在使用NSManagedObject实体值,其中包含已取消的已编辑值。

我想我可以通过创建NSManagedObject的副本来启动编辑过程。如果按下取消编辑按钮,我可以将其复制回原件。 (我甚至可以通过移动指针来替换原件和副本。但由于指针实际上已经通过了几个对象,我不知道如何管理副本上的保留号。)

有没有人有任何其他建议?

由于

1 个答案:

答案 0 :(得分:0)

使用rollback应该可以达到你想要的效果,而我不确定它是什么。这可能是一个实现细节错误。

您可以通过调用上下文的updatedObjects找到已更新但尚未保存的特定托管对象。