The problem with insertions is that the brand new objects are not
accessible to other contexts until they are saved. By accessible, I
mean semantically, as in their existence can't be communicated.
Until they are saved, the new objects don't have an identity (primary
key)
For updates and deletions, the objects have their permanent identity,
and you can use any of the standard Cocoa or OSX idioms for
communicating between threads to replicate those changes in a
different context.
Core Data doesn't have any additional routines for that.
However, Core Data offers the following on NSManagedObject:
- (NSDictionary *)committedValuesForKeys:(NSArray *)keys;
- (NSDictionary *)changedValues;
Also, NSManagedObject is fully KeyValueCoding compliant, and KVC has
a number of handy methods for pushing and pulling batches of changes:
-(NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys
- (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues