Desidero aggiungere un gestore di annullamento a un'applicazione iphone con supporto in coredata. Quando l'utente tenta di aggiungere un nuovo oggetto (toccando il pulsante +), carico un nuovo viewcontroller modale e avvio un nuovo gruppo di annullamento in viewDidLoad.Gruppo annidato annidato con CoreData
Quando l'utente preme il pulsante Annulla, desidero ripristinare le modifiche nel callback cancelAction.
Query:
- E 'possibile avviare un gruppo di Undo nidificato e persistono attraverso ciclo di eventi e raccogliere tutte le modifiche apportate in un unico gruppo di annullamento? In questo momento, quando chiamo beginUndoGrouping in cancelAction, ricevo un'eccezione beginUndoGrouping mancante.
- Qual è il significato dei gruppiByEvent API per NSUndoManager? Ho bisogno di impostarlo su NO per mantenere un gruppo di annullamento attraverso il ciclo degli eventi?
- Cosa deve essere fatto nel callback saveAction per rendere permanenti le modifiche (a parte chiamare save su mangedObjectContext)? Come faccio a dire a Undo Manager di interrompere il monitoraggio delle modifiche?
messaggio di errore:
* terminazione app a causa di eccezione non identificata 'NSInternalInconsistencyException', la ragione: '_endUndoGroupRemovingIfEmpty :: NSUndoManager 0x75415f0 è in stato non valido, endUndoGrouping richiamata senza corrispondenza iniziare
Campione Codice:
// RootViewController.m
- (void) addAction {
// Load Modal View Controller to add new object
}
// AddViewController.m
- (void) viewDidLoad {
// Start nested undo group
[self.managedObjectContext processPendingChanges];
[self.managedObjectContext.undoManager beginUndoGrouping];
[self createModel];
}
- (void) cancelAction {
// Revert all changes
[self.managedObjectContext processPendingChanges];
[self.managedObjectContext.undoManager endUndoGrouping];
[self.managedObjectContext.undoManager undoNestedGroup];
...
}
- (void) saveAction {
// Save changes
}