5

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;
}];

何か案は?最も感謝しています!

4

1 に答える 1

0

レベルごとにマッピングが必要になると考えてください。したがって、エンティティオブジェクトのマッピングにはフィールド領域オブジェクトが含まれます。フィールド領域オブジェクトマッピングには、undオブジェクトが含まれています。undオブジェクトマッピングにはアイテムなどが含まれます。

これは、xmlではなくネストされたjson Rest Kit応答でのみ実行しましたが、各レベルのマッピングを作成する必要がありました。

このようなもの(すべてのレベルの関係が必要になるため、これは不完全です)

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

RKObjectMapping* regionmapping = [RKObjectMapping mappingForClass:[Region class]]; 
[regionmapping mapKeyPath:@"und" toRelationship:@"undArrays" withMapping:undMapping];
于 2012-07-09T20:17:54.237 に答える