There's no error or log at all, unless I set the merge policy to the default, in which case the error parameter contains what I expect it to contain: a conflict list with the right objects and properties that I expect to be in conflict. I understand the error coming back from the save, but not the call to objc_exception_throw.
In case it matters, this is on iPhone OS 3.1.3, Xcode 3.2.2. Thanks, Hank On Jun 8, 2010, at 12:08 PM, Alexander Spohr wrote: > Is there anything in the log? > What does save's error parameter return? > > atze > > > Am 08.06.2010 um 17:53 schrieb Hank Heijink (Mailinglists): > >> Dear all, >> >> I've run into the following problem, and I'm a bit stuck - I wonder if you >> can shed some light on this. I have an iPhone app that uses Core Data, and >> the problem occurs when the app terminates. I have an NSOperationQueue with >> potentially several NSOperations that are cancelled in the >> applicationWillTerminate: UIApplication delegate method. >> >> These NSOperations all have their own copy of an NSManagedObjectContext and >> an NSManagedObject subclass (I pass them the persistent store coordinator >> and an NSManagedObjectID that is permanent at that point). >> >> Canceling the NSOperation changes an attribute of the NSManagedObject >> subclass and I save the NSManagedObjectContext on the background thread >> after this change is made. This means that the NSManagedObjectContext on the >> main thread is now in conflict, and since all this happens in >> applicationWillTerminate:, it won't receive the >> NSManagedObjectContextDidSaveNotification so it can deal with it. >> >> My solution to this is to set the merge policy to >> NSMergeByPropertyStoreTrumpMergePolicy right before saving the main >> NSManagedObjectContext to give precedence to the already-saved context(s). I >> haven't been able to find any information about this scenario - the Core >> Data Programming Guide (in Communicating Changes Between Contexts) seems to >> suggest my approach (case 3b), although there in-memory changes are >> preferred over store changes. >> >> I always have a break point set on objc_exception_throw, and it hits this >> breakpoint in the call to save. This is the stack backtrace: >> >> #0 0x986d94e6 in objc_exception_throw () >> #1 0x01dee37c in -[NSPersistentStoreCoordinator(_NSInternalMethods) >> executeRequest:withContext:] () >> #2 0x01e22afe in -[NSManagedObjectContext save:] () >> #3 0x000036b6 in -[MyAppDelegate applicationWillTerminate:] >> ...<snip>... >> >> However, if I remove the break point or hit continue, the application quits >> with an exit code of 0. If I wrap my [NSManagedObjectContext save] call in a >> @try @catch block, the @catch statements are never executed. So, is there an >> exception or isn't there? Should I rethink my approach? I'm just not sure >> what the issue is here. >> >> Any information is greatly appreciated! >> >> Thanks in advance, >> Hank_______________________________________________ >> >> 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/atze%40freeport.de >> >> This email sent to a...@freeport.de > > _______________________________________________ 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