• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: CoreData and NSUndoManager/Undo Grouping...
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CoreData and NSUndoManager/Undo Grouping...


  • Subject: Re: CoreData and NSUndoManager/Undo Grouping...
  • From: Jean-Nicolas Jolivet <email@hidden>
  • Date: Wed, 04 Mar 2009 16:53:43 -0500

Well, I have absolutely no idea why I managed to get it to work but, all I did was this:

Changed this code:

- (IBAction)saveChanges:(id)sender
{
[[[myDoc managedObjectContext] undoManager] endUndoGrouping];
[[[myDoc managedObjectContext] undoManager] setActionName:@"Item Editing"];
[self hideView:sender];

}


To this:

- (IBAction)saveChanges:(id)sender
{
[[[myDoc managedObjectContext] undoManager] setActionName:@"Item Editing"];
[[[myDoc managedObjectContext] undoManager] endUndoGrouping];

[self hideView:sender];

}



So basically, I'm setting the action name BEFORE ending undo grouping... and it's working just fine... I have no idea why but... it works now...




On 4-Mar-09, at 1:41 AM, Jean-Nicolas Jolivet wrote:

I'm trying to set up undo grouping properly for my editing dialog (i.e. when a user edits a ManagedObject, the whole editing process can be undo...)
I've read a couple of articles/tutorials about using undo grouping for Core Data but they all involved 2 things: An editing window/ sheet and a non-document based app...


In my case, I'm using a Document-based Core Data application and the editing is done in an NSView, not a window/sheet...

What I tried to do was the following: My view (let's call it EditView) has a controller (EditViewController)... in the EditViewController, when I'm showing the view (i.e. the editing process begins..) I'm doing this:

//Prepare undo manager
[[[myDoc managedObjectContext] undoManager] beginUndoGrouping];

where myDoc is an outlet to MyDocument...

I also have two actions in my editController; one for the save button and one for the cancel button:

- (IBAction)saveChanges:(id)sender
{
[[[myDoc managedObjectContext] undoManager] endUndoGrouping];
[[[myDoc managedObjectContext] undoManager] setActionName:@"Item Editing"];
[self hideView:sender];

}


- (IBAction)cancelChanges:(id)sender
{
	[self hideView:sender];
	[[[myDoc managedObjectContext] undoManager]  endUndoGrouping];
	[[[myDoc managedObjectContext] undoManager]  undo];
}


Now, the cancel button is working nicely... if I click on it, the view is hidden and the changes are undo... the problem is when I save the changes... in that case, the view does disappear and the action gets added and named correctly ("Undo Item Editing") but if I undo it (by selecting it from the "Edit" menu, or pressing Cmd+Z), nothing happens...


I'm not sure what's happening... could it be that a different NSUndoManager is used? Because basically both the save and cancel buttons are using the same code, the only thing that cancel does is to actually call the undo method directly on the undo manager... so the only thing I could see is that the "Undo" from the Edit menu is calling a different Undo Manager but I'm not sure why this would happen since my EditView/EditViewController doesn't have one (well...not that I know off anyway??)

It's also possible that I'm completely missing the point with NSUndoManagers/NSManageObjectContext etc...

Any help/suggestion would be appreciated...

Jean-Nicolas Jolivet
email@hidden
http://www.silverscripting.com

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden

Jean-Nicolas Jolivet email@hidden http://www.silverscripting.com

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >CoreData and NSUndoManager/Undo Grouping... (From: Jean-Nicolas Jolivet <email@hidden>)

  • Prev by Date: Re: Can't get setDelegate to work on NSMenu attached to NSStatusItem (SOLVED)
  • Next by Date: Doing NSStringDrawingTruncatesLastVisibleLine with NSLayoutManger
  • Previous by thread: CoreData and NSUndoManager/Undo Grouping...
  • Next by thread: Newbie: Learning path for my GTD app...
  • Index(es):
    • Date
    • Thread