2012-05-01 38 views
0

是否可以撤消在視圖控制器中所做的所有更改而不影響在其父視圖控制器中所做的更改?順便說一句。它們具有相同的managedObjectContext。 PS。我有兩個實體A和B.A與B具有多對多關係。視圖控制器VCA用於在A中執行一些更改。視圖控制器VCB用於在B中執行一些更改。VCA是VCB的父視圖控制器。撤銷在視圖控制器中所做的所有更改

+0

你能澄清你在談論什麼樣的改變嗎?你在改變哪些數據,它們生活在哪裏? – strings42

回答

1

無需創建新的上下文。當你離開子視圖控制器,你有兩種

[managedObjectContext save:&error]; 

[managedObjectContext rollback]; 

選項在後一種情況下,所有新的實體實例,數據修改等,都將被丟棄。

+0

回滾將撤消上下文中的所有更改。當父母和孩子在相同的上下文中查看控制器時,它無法辨認。 –

+0

否。自上次保存**以來,它會回滾所有更改**。您只需在啓動子視圖控制器之前進行保存。 – Mundi

+0

但是當我回到父視圖控制器時,保存的更改無法逆轉。 –

1

您應該爲子視圖控制器創建新的NSManagedObjectContext,並將其撤銷。 NSManagedObjectContext非常輕巧,並且不需要花費太多。

+0

是的,這是一個解決方案,但是我必須將管理對象從一個對象複製到創建的對象。 –

+0

不復制,但傳遞它的objectId。我認爲你沒有其他解決方案。 –

+0

我會稍後再試。 –

相關問題