I am new to Core Data and objective-c. I am working on a project where I am taking JSON data from a web service and syncing it with core data. I successfully followed this tutorial and am able to get the JSON into core data without any problem. Where I am having trouble is updating the NSSet associated with a to-many relationship. So far I can get it to update but in doing so its creating duplicate entries in the set. For example, I tried using the Xcode generated access method in my custom ManagedObject Entity1:
Entity1<-->>Entity2<-->>Entity3
I use this code to add the Entity2 object to Entity1
NSNumber *parentIdNumber = [record valueForKey:@"parent_id"];
NSArray *parentIdArray = [NSArray arrayWithObject:parentIdNumber];
NSArray *parentEntityArray = [self managedObjectsForClass:@"Entity1" sortedByKey:@"id" usingArrayOfIds:parentIdArray inArrayOfIds:YES];
Entity1 *parentEntity = [parentEntityArray lastObject];
[parentEntity addEntity2Object:(Entity2 *)newManagedObject];
After looking at each variable at runtime, I have determined that everything is working correctly up until the last line. When I add an Entity2 to Entity1 it does in fact add the object. However, when I try and add 3 different Entity2 objects then it appears to create 3 duplicate Entity2 objects in Entity1. The 3 duplicates are of the last instance of Entity2 added.
I have also tried using the approach from this answer: https://stackoverflow.com/a/5370758/2670912. Which looks like this:
NSNumber *parentIdNumber = [record valueForKey:@"parent_id"];
NSArray *parentIdArray = [NSArray arrayWithObject:parentIdNumber];
NSArray *parentEntityArray = [self managedObjectsForClass:@"Entity1" sortedByKey:@"id" usingArrayOfIds:parentIdArray inArrayOfIds:YES];
Entity1 *parentEntity = [parentEntityArray lastObject];
NSMutableSet *entity2Set = [parentEntity mutableSetValueForKey:@"entity2"];
[entity2Set addObject:newManagedObject];
This has the same duplicate entry result except instead of getting 3 duplicate entries of the 3rd object added, I get 3 duplicate entries of the first object added.
Does anyone have any idea whats causing this?