Hi Austin > Thank you Joanna, that was very helpful. So, from your experience, > mergeChangesFromContextDidSaveNotification: will not pick up adding a new > object, just editing an existing one? It seems like the real pain point is > having to re-create the new object in the second managedObjectContext and > copy all it's properties.
My tutorial is meant to demonstrate several different techniques, to give people an idea of what is available, especially if they are coming from a different programming language. I included the routine for copying the object contents, possibly because I too came across Tim Isted's blog and, at the time, thought that was what was necessary to ensure that object properties were populated from the correct MOC. However, I have just checked and found that you can, indeed, use the same methodology for both editing and adding a new object. Here is some revised code that you can use in place of the sheetDidEnd:returnCode:contextInfo: method in the tutorial. - (void) sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { // we are only interested in doing something with the edited word // if the Save button was pressed if (returnCode == NSOKButton) { NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter]; [dnc addObserverForName:NSManagedObjectContextDidSaveNotification object:managedObjectContext queue:nil usingBlock:^(NSNotification *saveNotification) { [[sourceListController managedObjectContext] mergeChangesFromContextDidSaveNotification:saveNotification]; [sourceListController fetch:nil]; }]; NSError *error; if (![managedObjectContext save:&error]) { NSLog(@"Error saving edited Word"); } [dnc removeObserver:self name:NSManagedObjectContextDidSaveNotification object:managedObjectContext]; } else { // Cancel button pressed - // rollback any changes to the temporary context [managedObjectContext rollback]; } // close the dialog [sheet orderOut:self]; // clear temporary object from controller [wordController setContent:nil]; } The only real difference here is that, within the callback block, you need to call [sourceListController fetch:nil] to ensure that the original browsing list is not just refreshed but that the sort descriptors are honoured to include the new object. Regards Joanna -- Joanna Carter Carter Consulting _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com