【问题标题】:RKConnectionDescription unstable with Restkit 0.20.3RKConnectionDescription 与 Restkit 0.20.3 不稳定
【发布时间】:2014-04-22 15:20:15
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

  • 这 15% 是在单个响应中收到的吗(另外 85% 来自之前的响应)?
  • B 实体的服务可能会被触发多次,有时甚至在实体 A 存在之前就触发

标签: mapping restkit rkobjectmapping


【解决方案1】:

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

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

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

【讨论】:

  • 我使用了一种解决方法来添加缺少的连接,但我想知道为什么 rest kit 会造成这么多麻烦。休息套件的问题在于它没有标准行为。有时它连接所有实体,有时连接几个,有时没有。
  • 我需要了解更多关于测试的信息。如果你两次运行相同的测试,你应该得到完全相同的结果......
猜你喜欢
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
相关资源
最近更新 更多