gpt4 book ai didi

ios - RestKit 嵌套映射到特定数组项

转载 作者:可可西里 更新时间:2023-11-01 05:00:16 24 4
gpt4 key购买 nike

可以通过 mapKeyPath 点语法强制 RestKit 对象映射器映射到数组中的特定嵌套对象吗?

这是我要映射的响应

<result is_array="true">
<item>
<_field_data>
<nid>
<entity>
<field_region>
<und is_array="true">
<item>
<value>1</value>
</item>
</und>
</field_region>
....

我只对 field_region 返回的第一个项目感兴趣。

映射这个的正确方式是什么?

我已经尝试了各种迭代:

RKManagedObjectMapping *record = [RKManagedObjectMapping mappingForClass:[MyRecordClass class] inManagedObjectStore:objManager.objectStore];
[record mapKeyPath:@"_field_data.nid.entity.field_region.und.0.item.value" toAttribute:@"region"];

我不断收到类似于以下内容的错误:

T restkit.object_mapping:RKObjectMappingOperation.m:152 Found transformable value at keyPath '_field_data.nid.entity.field_region.und.0.item.value'. Transforming from type '__NSArrayI' to 'NSNumber'
W restkit.object_mapping:RKObjectMappingOperation.m:232 Failed transformation of value at keyPath '_field_data.nid.entity.field_region.und.0.item.value'. No strategy for transforming from '__NSArrayI' to 'NSNumber'

我通过以下方式调用映射:

[[RKObjectManager sharedManager] loadObjectsAtResourcePath:kMyResourcePath usingBlock:^(RKObjectLoader* loader) {
loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[MyRecordClass class]];
loader.method = RKRequestMethodGET;
loader.delegate = self;
loader.targetObject = nil;
}];

有什么想法吗?非常感谢!

最佳答案

认为您必须为每个级别都有映射,因此实体对象映射包含一个字段区域对象。字段区域对象映射包含一个 und 对象。 und 对象映射包含项目等...

我只使用嵌套的 json rest kit 响应而不是 xml 完成了此操作,但必须为每个级别创建映射。

类似这样的东西(假设这是不完整的,因为你需要每个级别的关系)

RKObjectMapping* undMapping = [RKObjectMapping mappingForClass:[UND class]];
[und mapKeyPath:@"item" toAttribute:@"item"];

RKObjectMapping* regionmapping = [RKObjectMapping mappingForClass:[Region class]];
[regionmapping mapKeyPath:@"und" toRelationship:@"undArrays" withMapping:undMapping];

关于ios - RestKit 嵌套映射到特定数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10693715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com