核心数据到多个关系在向父实体添加对象时创建重复项

我是Core Data和objective-c的新手。 我正在开发一个项目,我从Web服务中获取JSON数据并将其与核心数据同步。 我成功地遵循了本教程,并且能够毫无问题地将JSON转换为核心数据。 我遇到问题的地方是更新与多对多关系相关的NSSet。 到目前为止,我可以让它更新,但这样做会在集合中创建重复的条目。 例如,我尝试在我的自定义ManagedObject Entity1中使用Xcode生成的访问方法:

Entity1>Entity2>Entity3 

我使用此代码将Entity2对象添加到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]; 

在运行时查看每个变量后,我确定一切正常,直到最后一行。 当我向Entity1添加Entity2时,它确实添加了对象。 但是,当我尝试添加3个不同的Entity2对象时,它似乎在Entity1中创建了3个重复的Entity2对象。 3个重复项是添加的Entity2的最后一个实例。

我也试过使用这个答案的方法: https : //stackoverflow.com/a/5370758/2670912 。 看起来像这样:

  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]; 

这具有相同的重复条目结果,除了不添加第三个对象的3个重复条目,我得到第一个对象的3个重复条目。

有没有人知道这是什么造成的?

我使用的代码的snippit结果certificate是正常的。 问题是当我在UITableView显示数据时,它正确地重写NSSet的实体数量,从而显示正确的单元格数。 但是,我有一个代码:

  NSSet *entitiesSet = [self.selectedEntity1 valueForKey:@"entity2"]; NSArray *entities = [entitiesSet allObjects]; Entity2 *entity = [entities objectAtIndex:[indexPath indexAtPosition:0]]; 

这会导致单元格仅显示NSSet的最后一个对象,使其看起来像重复项。 我通过将0更改为1来解决问题,如下所示:

  Entity2 *entity = [entities objectAtIndex:[indexPath indexAtPosition:1]];