Есть две сущности: Автор и Книга. У автора есть атрибут authorName и отношения ко многим книгам. Книга имеет несколько атрибутов и авторские отношения. Существует контроллер представления (VCAuthor) для редактирования объекта Author. Контроллер дочернего представления (VCBook) предназначен для редактирования книг автора. Есть только один контекст управляемого объекта. В классе VCBook я группирую отладчик следующим образом
-(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 с Obama на Big Obama и сохраняю его в MOC по author.authorName = authorNameTextField.text в - (void) viewWillDisappear: (BOOL) анимированный {} метод. Затем я вошел в контроллер дочернего представления VCBook, чтобы отредактировать книги автора, и щелкнул кнопку отмены, чтобы вернуться к VCAuthor. Я считаю, что authorName по-прежнему Обама, это означает, что ожидаемое изменение authorName отменено. Смена authorName вообще не входит в группу отмены, и почему это могло произойти? пс. конечно, я перезагружаю данные, когда возвращаюсь в VCAuthor. Я просто веду журнал authorName до и после отмены. До отмены имя автора - это измененный Большой Обама, а после отмены - Обама.