2012-05-21 11 views
5

È possibile forzare il mapping di oggetti RestKit a mappare su un oggetto nidificato specifico in un array tramite la sintassi del punto mapKeyPath?RestKit mappatura nidificata su elemento di array specifico

Ecco la risposta che sto cercando di mappare

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

Sono interessato solo il primo elemento che sarà mai restituito per field_region.

Qual è il modo corretto per mappare questo?

ho provato varie iterazioni di:

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

e continuo a ricevere errori di simile a:

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' 

invoco la mappatura tramite:

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

Tutte le idee? Più apprezzato!

risposta

0

pensa che dovrai mappare per ogni livello, quindi il mapping dell'oggetto entità contiene un oggetto regione campo. la mappatura dell'oggetto regione campo contiene un oggetto. La mappatura dell'oggetto contiene oggetti, ecc ...

Ho fatto solo questo con le risposte nidificate del kit di riposizionamento json, non con xml, ma ho dovuto creare la mappatura per ogni livello.

qualcosa di simile (concesso questa è incompleta, perché avresti bisogno di un rapporto per ogni livello)

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

grazie. ho esaminato questa mappatura all'interno della mappatura, ma ho pensato che fosse più saggio (e più semplice) semplificare la risposta del server. – Ted

Problemi correlati