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