I’m having some issues with concurrency with Core Data. I create an object that has a to-many relationship with another object (which in turn has a to-one reciprocal relationship with the first object), then dispatch_async onto a private queue. In that queue, I use a separate managed object context, which I’ve created earlier and only use within that queue. Here’s a snippet:
ParentObject *parent = [NSEntityDescription insertNewObjectForEntityName:@"ParentObject"] inContext:[self moc]]; NSManagedObjectID *objectID = [parent objectID]; dispatch_async(dedicatedQueue, ^{ // Note: childContext is an NSManagedObjectContext that has been created earlier and is only used within this queue. ParentObject *parent = [childContext objectWithID:userID]; for (NSDictionary *jsonDict in allChildDicts) { ChildObject *child = [NSEntityDescription insertNewObjectForEntityName:@"ChildObject"] inContext:childContext]; [parent addChildObject:child]; } }); If I try to save the context within the dedicated queue, I get validation errors on the child objects with the text “Dangling reference to an invalid object.” It appears to work correctly if I create the parent object within the dedicated child queue. So, what is the proper way to create these objects on the main queue and then update them in the background? Thanks in advance. Jeff Kelley _______________________________________________ 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