Ted*_*Ted 5 mapping core-data ios restkit
可以通过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>
....
Run Code Online (Sandbox Code Playgroud)
我只对将为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"];
Run Code Online (Sandbox Code Playgroud)
我不断得到类似于的错误:
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'
Run Code Online (Sandbox Code Playgroud)
我通过以下方式调用映射:
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:kMyResourcePath usingBlock:^(RKObjectLoader* loader) {
loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[MyRecordClass class]];
loader.method = RKRequestMethodGET;
loader.delegate = self;
loader.targetObject = nil;
}];
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?最感谢!
认为您必须为每个级别都有映射,因此实体对象映射包含一个字段区域对象。字段区域对象映射包含一个 und 对象。und 对象映射包含项目等...
我只使用嵌套的 json 休息套件响应(而不是 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];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
957 次 |
| 最近记录: |