我有一個視圖控制器管理視圖總是以編輯模式顯示。該視圖基本上是一個表格視圖,類似於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