2012-05-21 22 views
5

RestKit nesnesi eşleyicisi, mapKeyPath nokta sözdizimi aracılığıyla bir dizideki belirli bir iç içe nesneye eşlemek için zorlanabilir mi?RestKit iç içe eşleme belirli bir dizi öğesine

İşte

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

şimdiye field_region için iade edilecektir ilk öğenin tek ilgileniyorum haritasına çalışıyorum tepki.

Bunu eşlemek için doğru yol nedir?

Ben çeşitli tekrarlamalar denedi:

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

ve ben hataları benzer almaya devam:

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

Herhangi fikirler:

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' 

ben üzerinden eşleme çağırmak? En çok takdir edilen!

cevap

0

Her düzey için eşlemeniz olması gerektiğini düşünün, böylece nesne nesne eşlemesi bir alan bölgesi nesnesini içerir. alan bölgesi nesne eşlemesi bir und nesnesi içerir. und object mapping item, etc ...

Bunu sadece xml değil, yuvalanmış json rest kit yanıtlarıyla yaptım, ancak her seviye için haritalama oluşturmak zorundaydım. (Her seviye için bir ilişkiyi gerekir çünkü bu eksik verilmiş) böyle

şey

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

teşekkürler. Haritalamada bu haritalamaya baktım, ancak sunucu yanıtını basitleştirmek için daha akıllıca (ve daha kolay) düşündüm. – Ted

İlgili konular