我是 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];
在运行时查看每个变量后,我确定一切正常,直到最后一行。当我将 Entity2 添加到 Entity1 时,它实际上添加了对象。但是,当我尝试添加 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 个重复条目。
有谁知道是什么原因造成的?