2011-07-09 44 views
2

我正在與核心數據的第一次,這讓我難倒。核心數據和撤消組

我有以下的方法來處理分組我的變化,並將其保存:

- (void)beginUndoGrouping:(NSManagedObjectContext *)managedObjectContext { 
    NSLog(@"begin"); 
    [managedObjectContext processPendingChanges]; 
    [managedObjectContext.undoManager beginUndoGrouping]; 
} 

- (void)endUndoGroupingAndSaveContext:(NSManagedObjectContext *)managedObjectContext 
{ 
    NSLog(@"end/save"); 
    [managedObjectContext processPendingChanges]; 
    [managedObjectContext.undoManager endUndoGrouping]; 
    [self saveContext:managedObjectContext]; 
} 

- (void)cancelUndoGrouping:(NSManagedObjectContext *)managedObjectContext { 
    NSLog(@"cancel"); 
    [managedObjectContext processPendingChanges]; 
    [managedObjectContext.undoManager endUndoGrouping]; 
    [managedObjectContext.undoManager undoNestedGroup]; 
} 

通過我知道這一點的NSLog語句計算機輔助是事件的順序:在根視圖

  • 啓動應用程序
  • 進入列表視圖
    開始
  • 離開列表視圖
    末/保存
  • 進入項目詳細信息視圖
  • 進入類別詳細視圖
    開始
  • 觸摸添加類別按鈕,這把我們帶到另一種觀點認爲
    開始
  • 輸入新數據
  • 觸摸完成按鈕
    結束/保存
  • 觸摸返回返回到項目詳細信息視圖
  • 觸摸取消按鈕
    取消
  • 回到列表視圖
    開始

在這點我的新類別已經消失,我不明白爲什麼。它被包裹在一個小組中,結束並保存。難道它不能免於在這一點上回滾?我希望取消隻影響項目詳細視圖中所做的任何更改。如果它現在的行爲方式是正確的,那麼我該如何讓它按照我期望的方式行事?

任何澄清將不勝感激!

回答

2

答案結果是,您需要爲內部組使用第二個託管對象上下文。

+0

由於沒有提供其他答案,因此您可以接受此答案。你不會獲得任何代表,但它會對社區有所幫助。 –

+0

你可以發佈你的代碼作爲最終答案嗎?我不確定你的意思是關於第二個管理對象上下文。 –