有两个实体:作者和图书。 笔者有一个属性AUTHORNAME和一对多关系的书。 本书有几个属性和关系的作家。 有一种观点控制器(VCAuthor)来编辑一个Author对象。 子视图控制器(VCBook)是编辑作家的书籍。 只有一个managedobjectcontext。 在VCBook类别i组的UndoManager如下
-(void)viewDidLoad
{
NSUndoManager *anUndoManager = [[NSUndoManager alloc] init];
[self.book.managedObjectContext setUndoManager:anUndoManager];
[anUndoManager release];
[self.book.managedObjectContext.undoManager beginUndoGrouping];
}
-(void)cancelAction:(id)sender
{
NSLog(@"%@", self.author.authorName);
[self.book.managedObjectContext.undoManager endUndoGrouping];
[self.book.managedObjectContext.undoManager undoNestedGroup];
self.book.managedObjectContext.undoManager = nil;
NSLog(@"%@", self.author.authorName);
[self dismissModalViewControllerAnimated:YES];
}
所述cancelAction被链接到在VCBook一个取消按钮,用于取消在VCBook的所有更改。
问题就在这里:首先,在VCAuthor,我编辑AUTHORNAME在UITextfiled authorNameTextField从奥巴马到大奥巴马,并把它保存在商务部通过author.authorName = authorNameTextField.text - (空)viewWillDisappear:(BOOL)动画{} 方法。 然后我就去到子视图控制器VCBook并编辑作者的书,然后点击取消按钮返回到VCAuthor。 我觉得AUTHORNAME还是奥巴马,这意味着AUTHORNAME的预期变化已经撤销。 该AUTHORNAME的变化不是撤消组中的所有的,为什么会这样呢? PS。 当然,我reloadData当我得到回VCAuthor。 我的NSLog的AUTHORNAME之前和撤消后。 之前撤消AUTHORNAME是被改变的一个大的奥巴马,并撤消后成为奥巴马