NSUndoManager, Core Data and selective undo/redo

Posted by Combat on Stack Overflow See other posts from Stack Overflow or by Combat
Published on 2010-12-28T21:51:18Z Indexed on 2010/12/28 21:53 UTC
Read the original article Hit count: 288

I'm working on a core data application that has a rather large hierarchy of managed objects similar to a tree.

When a base object is created, it creates a few child objects which in turn create their own child objects and so on. Each of these child objects may gather information using NSURLConnections.

Now, I'd like to support undo/redo with the undoManager in the managedObjectContext. The problem is, if a user creates a base object, then tries to undo that action, the base object is not removed. Instead, one or more of the child objects may be removed. Obviously this type of action is unpredictable and unwanted.

So I tried disabling undo registration by default. I did this by calling disableUndoRegistration: before anything is modified in the managedObjectContext. Then, enabling undo registration before base operations such as creating a base object the again re-disabling registrations afterwords.

Now when i try to undo, I get this error:

undo: NSUndoManager 0x1026428b0 is in invalid state, undo was called with too many nested undo groups

Thoughts?

© Stack Overflow or respective owner

Related posts about cocoa

Related posts about core-data