我们有一个非常复杂的核心数据模型,其中包含足够的数据以保证多个映射模型。我们在理解创建跨越映射模型的关系的要求方面存在问题。下面的代码是我们尝试在目标上下文中查找相关对象并设置关系的最新尝试。现在我们意识到我们不需要特定的对象类型和关系名称,但我们只是试图在一个实体上小规模地开展这项工作,然后再处理其他300个关系。帮帮我!!!马库斯扎拉你在哪里?任何人都有一个建议?具有多种映射模型的复杂核心数据迁移
Link to picture of the Data Model
代码来创建关系......
- (BOOL)createRelationshipsForDestinationInstance:(NSManagedObject *)dInstance entityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error {
if ([mapping.name isEqualToString:@"ProductImageToProductImage"]) {
[super createRelationshipsForDestinationInstance:dInstance entityMapping:mapping manager:manager error:error];
NSArray *sources = [manager sourceInstancesForEntityMappingNamed:mapping.name destinationInstances:@[dInstance]];
NSArray *destinations = [manager destinationInstancesForEntityMappingNamed:@"ProductImageToProductImage" sourceInstances:sources];
NSManagedObject *sourceObj = [[sources objectAtIndex:0] valueForKey:@"product"];
if (destinations.count == 1) {
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Product"];
request.predicate = [NSPredicate predicateWithFormat:@"xID = %@",[sourceObj valueForKey:@"xID"]];
;
NSArray *result = [manager.destinationContext executeFetchRequest:request error:error];
if (result.count > 0) {
Product *destProduct = (Product *)[result objectAtIndex:0];
[dInstance setValue:destProduct forKey:@"product"];
}
} else if (destinations.count > 1) {
NSLog(@"multiple products for %@",sources);
}
}
return YES;
}
好吧,这有点晚了,但是这是对我的答案的答复? – Aderstedt