Ich arbeite an einer Kerndatenanwendung, die eine ziemlich große Hierarchie von verwalteten Objekten ähnlich einer Struktur hat.NSUndoManager, Core Data und selektives Rückgängig/Wiederherstellen
Wenn ein Basisobjekt erstellt wird, erstellt es ein paar untergeordnete Objekte, die wiederum ihre eigenen untergeordneten Objekte usw. erstellen. Jedes dieser untergeordneten Objekte kann Informationen mithilfe von NSURLConnections sammeln.
Nun möchte ich Undo/Redo mit dem UndoManager im ManagedObjectContext unterstützen. Wenn ein Benutzer ein Basisobjekt erstellt und dann versucht, diese Aktion rückgängig zu machen, wird das Basisobjekt nicht entfernt. Stattdessen können eines oder mehrere der untergeordneten Objekte entfernt werden. Offensichtlich ist diese Art von Aktion unvorhersehbar und unerwünscht.
So habe ich versucht, die Registrierung rückgängig machen standardmäßig deaktiviert. Ich tat dies, indem ich disableUndoRegistration:
anrief, bevor irgendetwas in managedObjectContext geändert wird. Dann können Sie die Registrierung vor den Basisoperationen rückgängig machen, z. B. das Erstellen eines Basisobjekts, um die Registrierungen anschließend erneut zu deaktivieren.
Nun, wenn ich rückgängig zu machen versuchen, bekomme ich diesen Fehler:
undo: NSUndoManager 0x1026428b0 is in invalid state, undo was called with too many nested undo groups
Gedanken?
das funktionierte für mich! –