Machen Sie alle Änderungen rückgängig, die im untergeordneten Ansichtscontroller vorgenommen wurden

Es gibt zwei Entitäten: Autor und Buch. Author hat ein Attribut authorName und ein Buch mit zu vielen Beziehungen. Buch hat mehrere Attribute und einen Beziehungsautor. Es gibt einen View Controller (VCAuthor), um ein Author-Objekt zu bearbeiten. Der Child View Controller (VCBook) soll Bücher des Autors bearbeiten. Es gibt nur einen verwalteten Objektkontext. In der VCBook-Klasse gruppiere ich den Undomanager wie folgt

<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>

Die cancelAction ist mit einer Cancel-Schaltfläche auf dem VCBook verknüpft, mit der alle im VCBook vorgenommenen Änderungen rückgängig gemacht werden.

Probleme gibt es hier: Zuerst bearbeite ich in der VCAuthor den authorName in einem UITextfiled authorNameTextField von Obama nach Big Obama und speichere ihn im MOC von author.authorName = authorNameTextField.text in der - (void) viewWillDisappear: (BOOL) -Animation {} Methode. Dann ging ich in den Child View Controller VCBook, um Bücher des Autors zu bearbeiten und auf die Abbrechen-Schaltfläche zu klicken, um zum VCAuthor zurückzukehren. Ich finde, der authorName ist immer noch Obama, das heißt, die erwartete Änderung des authorName wurde rückgängig gemacht. Die Änderung des authorName ist überhaupt nicht in der Undo-Gruppe und warum könnte dies passieren? ps. Natürlich lade ich Daten neu, wenn ich wieder in VCAuthor bin. Ich habe nur den Autorennamen vor und nach dem Rückgängigmachen NSLog. Vor dem Rückgängigmachen ist der authorName der geänderte Big Obama und nach dem Rückgängigmachen wird er Obama

Antworten auf die Frage(1)

Ihre Antwort auf die Frage