RKConnectionDescription 与 Restkit 0.20.3 不稳定

Posted

技术标签:

【中文标题】RKConnectionDescription 与 Restkit 0.20.3 不稳定【英文标题】:RKConnectionDescription unstable with 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 存在之前就触发 【参考方案1】:

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

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

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

【讨论】:

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

以上是关于RKConnectionDescription 与 Restkit 0.20.3 不稳定的主要内容,如果未能解决你的问题,请参考以下文章

在没有 RestKit 的情况下复制 RKConnectionDescription

RestKit 按 ID 的属性关系

LDAP 与 MYSQL .. JA-SIG CAS 与 LDAP 与 CAS 与 MySQL

python网络编程基础(线程与进程并行与并发同步与异步)

=与==&与&&| 与 || 的区别

与 0 进行比较与与某个值进行比较是不是更快?