我有来自两个不同网络服务的两个实体,这些实体有很多关系。
实体A { NSString * id, NSString *详情 }
实体B { NSString *键, NSString *值, NSString *类型, NSString * foreignId }
我尝试映射实体B:
+ (RKObjectMapping *)mapping { RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass([self class]) inManagedObjectStore:[RKObjectManager sharedManager].managedObjectStore];
[mapping addAttributeMappingsFromDictionary:@{
@"key": @"key",
@"id":@"foreignId",
@"type":@"type",
@"value":@"value"
}];
mapping.identificationAttributes = @[@"featureKey",@"type",@"foreignID"];
[mapping addConnectionForRelationship:@"homeApplianceDatas" connectedBy:@{@"foreignId":@"id"}];
return mapping;
}
在我的测试json中,所有类型B的实体都具有相同的foreignID" Car"但只有少数人与A" A"实体(约15%)!!!
任何想法?
答案 0 :(得分:0)
使用外键映射时,如果找不到目标对象,则可以(可以)进行mo连接。以后不会再次处理该连接。
此外(这可能被认为是RestKit中的错误),任何新的外键映射关系内容替换任何以前的关系内容。没有可用于修改此行为的API(因为存在嵌套关系处理分配策略)。
因此,在许多情况下,您需要自己处理外键信息,以确保所有需要连接的内容实际连接。你可以针对任务政策提出针对RestKit的问题,但第一个问题是你的设计问题。