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