RestKit:将嵌套数组映射到Object

时间:2013-11-26 14:37:35

标签: ios restkit restkit-0.20

我有两个类来映射JSON响应:ItemFrequentProps

项目具有以下属性:

frequentProps, identifier, name

FrequentProps具有属性

propOne
propTwo
propThree
propFour

您可以看到frequentProps中的Item属于FrequentProps类型。

考虑以下JSON响应:

[
    {
        "frequentProps": [
            {
                "propOne": 174
            },
            {
                "propTwo": 9.726
            },
            {
                "propThree": 2.021
            },
            {
                "propFour": 25.07
            }
        ],
        "identifier": "4223",
        "name": "TheName"
    }
]

JSON的外部部分应该映射到类Item的对象,嵌套数据应该映射到frequentProps,作为对象的属性。遗憾的是,frequentProps未映射到具有相同名称的Item属性,而是映射到NSArray(如果我将属性的类型定义为NSArray,否则属性仍然没有。)

以下是配置:

RKObjectMapping *itemMapping = [RKObjectMapping mappingForClass:[Item class]];
[item addAttributeMappingsFromDictionary:[Item attributesMapping]];
RKObjectMapping *frequentPropsMapping = [RKObjectMapping mappingForClass:[FrequentProps class]];    
[frequentPropsMapping addAttributeMappingsFromDictionary:[FrequentProps attributesMapping]];
[itemMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"frequentProps"
                                                                                      toKeyPath:@"frequentProps"
                                                                                    withMapping:frequentProps]];

// adding the response descriptor, etc...

如何将frequentProps直接映射到FrequentProps类型的对象,该对象仍为Item的属性?

1 个答案:

答案 0 :(得分:1)

您不能,因为映射中没有办法指定您将索引编入数组并将该索引放入指定的键中。我希望永远不会支持这个。

不理想但是:您可以使用自定义setter方法添加数组属性。调用setter时,通过创建FrequentProps实例并从数组内容设置属性来改变数据。