2012-05-25 169 views
3

我想撤消對我的NSManagedObjectContext的保存操作;我一直認爲,這是什麼NSUndoManager是,但它好像撤消在保存操作不起作用......NSManagedObjectContext:撤消保存操作?

一個例子:

[[NSManagedObjectContext MR_contextForCurrentThread] setUndoManager:[NSUndoManager new]]; 
[[NSManagedObjectContext MR_contextForCurrentThread].undoManager beginUndoGrouping]; 
MyDataObject *mdo = [MyDataObject MR_createInContext:[NSManagedObjectContext MR_contextForCurrentThread]]; 
mdo.name = @"..."; 
[[NSManagedObjectContext MR_contextForCurrentThread] save:nil]; 
[[NSManagedObjectContext MR_contextForCurrentThread].undoManager endUndoGrouping]; 
[[NSManagedObjectContext MR_contextForCurrentThread].undoManager undo]; 

但插不撤消。 ..有沒有辦法做到這一點?像交易一樣?

回答

4

您可以使用子託管對象上下文來執行保存操作(將其保存到父項中,但不會觸及磁盤上的文件),然後在父項上執行回滾操作(如果要撤消它) ?

我想打電話save就像提交自上次保存以來所做的所有更改,rollback就像是放棄它們一樣。一旦您提交了更改,它們就位於持久性存儲中,並且沒有保留事務日誌以支持回滾。

你能否更詳細地解釋一下爲什麼你想在交易中間使用save