Sto lavorando a un'applicazione di dati di base con una gerarchia piuttosto grande di oggetti gestiti simile a un albero.NSUndoManager, Dati principali e annulla/ripristina selettiva
Quando viene creato un oggetto base, crea alcuni oggetti figlio che a loro volta creano i propri oggetti figli e così via. Ognuno di questi oggetti figlio può raccogliere informazioni usando NSURLConnections.
Ora, mi piacerebbe supportare annullare/ripristinare con undoManager in managedObjectContext. Il problema è che se un utente crea un oggetto base, quindi tenta di annullare quell'azione, l'oggetto base non viene rimosso. Invece, uno o più oggetti figlio possono essere rimossi. Ovviamente questo tipo di azione è imprevedibile e indesiderata.
Così ho provato a disabilitare la registrazione di annullamento per impostazione predefinita. Ho fatto questo chiamando disableUndoRegistration:
prima che qualcosa venga modificato in managedObjectContext. Quindi, abilitando la registrazione di annullamento prima delle operazioni di base come la creazione di un oggetto di base, si riabilitano nuovamente le registrazioni successive.
Ora quando provo ad annullare, ottengo questo errore:
undo: NSUndoManager 0x1026428b0 is in invalid state, undo was called with too many nested undo groups
Pensieri?
questo ha funzionato per me! –