【问题标题】:RestKit identificationAttributes not working for collectionIndexRestKit 标识属性不适用于 collectionIndex
【发布时间】:2015-06-04 05:02:31
【问题描述】:

我的用例是对于特定的集合端点,我正在创建一个本地核心数据支持的联结表来指定顺序。这是一个抽象对象;不是我可以直接映射的。

我成功地创建了集合、所有对象和所有订单的表示。在后续请求中,会创建重复的订单对象。

我的 IdentificationAttributes 数组包含一个表示页面偏移量的属性,以及一个表示请求相对顺序的属性。 (查询参数基于偏移量和限制。一个项目的顺序=偏移量+相对顺序)。

在我看来这是 RestKit 的一个问题(如果我删除了 collectionIndex 属性,则不会创建重复项,另外我已验证该属性设置了正确的数值);但我是新手。 collectionIndex 可以用作标识属性,还是不允许这样做?

【问题讨论】:

  • 注意:我还根据这个问题尝试了人工标识符属性:github.com/RestKit/RestKit/issues/1604 但它从 0.24.1 开始不起作用;发生的情况是我最终只有一个订单对象,并且每个新请求都会重复。这可能是因为在创建单个对象期间未调用 willSave?

标签: restkit restkit-0.20


【解决方案1】:

我查看了RKMapperOperation,发现了这段代码,说明collectionIndex是在处理了标识属性之后才计算出来的。如果不对 RestKit 进行更改,这是不可能的。 objectForRepresentation:withMapping: 方法检索现有对象,然后更改其索引。

   [objectsToMap enumerateObjectsUsingBlock:^(id mappableObject, NSUInteger index, BOOL *stop) {
        id destinationObject = [self objectForRepresentation:mappableObject withMapping:mapping];
        if (destinationObject) {
            mappingData.collectionIndex = index;
            BOOL success = [self mapRepresentation:mappableObject toObject:destinationObject isNew:YES atKeyPath:keyPath usingMapping:mapping metadataList:metadataList];
            if (success) [mappedObjects addObject:destinationObject];
        }
        *stop = [self isCancelled];
    }];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多