2012-05-21 14 views
5

Można wymusić mapowanie obiektów obiektu RestKit w celu mapowania do konkretnego obiektu zagnieżdżonego w tablicy za pomocą składni punktowej mapKeyPath?Mapowanie zagnieżdżone RestKit na konkretny element tablicy

Oto odpowiedź Próbuję map

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

Jestem zainteresowany tylko w pierwszej pozycji, która nigdy nie będzie zwracany do field_region.

Jaki jest prawidłowy sposób odwzorowania tego?

Próbowałem różnych iteracji:

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

i ciśgle błędy podobne do:

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' 

modlę odwzorowanie poprzez:

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

jakieś pomysły? Najbardziej doceniane!

Odpowiedz

0

Myślę, że będziesz musiał mieć mapowanie dla każdego poziomu, więc mapowanie obiektów obiektu zawiera obiekt regionu pola. odwzorowanie obiektu regionu pola zawiera obiekt und. mapowanie und object zawiera element, itp ...

Zrobiłem to tylko z zagnieżdżonymi odpowiedziami zestawu restrykcji json, a nie xml, ale musiałem utworzyć mapowanie dla każdego poziomu.

coś takiego (przyznawana jest niekompletna, ponieważ należałoby relację na każdym poziomie)

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

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

dzięki. Sprawdziłem to odwzorowanie w mapowaniu, ale uważałem, że jest to mądrzejsze (i łatwiejsze), aby uprościć odpowiedź serwera. – Ted

Powiązane problemy