我有两个类来映射JSON响应:Item
和FrequentProps
项目具有以下属性:
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
的属性?
答案 0 :(得分:1)
您不能,因为映射中没有办法指定您将索引编入数组并将该索引放入指定的键中。我希望永远不会支持这个。
不理想但是:您可以使用自定义setter方法添加数组属性。调用setter时,通过创建FrequentProps
实例并从数组内容设置属性来改变数据。