我有一个视图控制器管理视图总是以编辑模式显示。该视图基本上是一个表格视图,类似于Apple联系人应用程序中的联系人详细信息。我的视图下方的模型由包含根实体的2级对象图表示 - 称为R
- 与子实体C
具有多对多关系。现在,R
是一个大对象(它有20多个属性,所有可编辑但非强制性的)。默认情况下,R
有n
子项(n
是一个可配置的值),但子对象可以通过我的编辑视图添加到/从R
的集合中删除,也可以编辑C
的属性。请注意,C
实体包含图像元数据的属性,因此可能会在编辑时挑选图像并将其与模型关联。取消编辑:NSUndoManager或单独NSManagedObjectContext进行编辑?
编辑R
及其孩子是通过主表格视图表单以及从我导航(“来回”)的“次要”视图执行的,以便根据具体情况收集所需信息。
我的问题是,如何在这种情况下实施“取消所有修改”,即如何隔离我所有的编辑以轻松恢复到编辑之前的状态?使用NSUndoManager
与我的主要NSManagedObjectContext
?有一个单独的NSManagedObjectContext
进行编辑?每个方面的折衷是什么?
我不在乎redo
。我正在寻找一种想法/解决方案,它可以在编辑时使用的内存量与在编辑时中断应用程序时保存用户数据的能力之间达到平衡。
谢谢你的所有想法。
谢谢你的建议。在联系人应用程序中,可以直接在主桌面视图中添加地址(在编辑时)。我想一个地址被建模为与联系本身不同的实体。我有一个非常相似的情况。你会说NSUndoManager是取消多个实体编辑的最佳工具吗?或第二个上下文隔离编辑?我选择哪个选项有什么关系? – octy 2011-05-31 20:16:59