0

我有来自两个不同 Web 服务的两个实体,它们具有多对多关系。

实体 A { NSString *id, NSString *details }

实体 B { NSString *key, NSString *value, NSString *type, 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“汽车”,但只有少数实体与“A”实体有关系(大约 15%)!!!

任何想法?

4

1 回答 1

0

使用外键映射时,如果没有找到目标对象,则将(可以)建立 mo 连接。稍后将不再处理该连接。

此外(这很可能被认为是 RestKit 中的一个错误),任何新的外键映射关系内容都会替换任何以前的关系内容。没有可用于修改此行为的 API(就像嵌套关系处理分配策略一样)。

因此,在许多情况下,您需要自己处理外键信息,以确保需要连接的所有内容都已实际连接。您可以针对分配策略提出针对 RestKit 的问题,但第一个问题是您的设计问题。

于 2014-04-22T15:54:24.427 回答