2012-05-01 30 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

我会稍后再试。 –

相关问题