2012-05-21 41 views
5

Có thể buộc trình ánh xạ đối tượng RestKit ánh xạ tới một đối tượng lồng nhau cụ thể trong một mảng thông qua cú pháp chấm của mapKeyPath?RestKit ánh xạ lồng nhau thành mục mảng cụ thể

Dưới đây là câu trả lời tôi đang cố gắng để ánh xạ

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

Tôi chỉ quan tâm đến mục đầu tiên bao giờ sẽ được trả lại cho field_region.

Cách chính xác để lập bản đồ này là gì?

Tôi đã cố gắng lặp lại hình:

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

và tôi tiếp tục nhận được lỗi tương tự như:

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' 

tôi gọi ánh xạ qua:

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

Bất kỳ ý tưởng? Cảm kích nhất!

Trả lời

0

nghĩ rằng bạn sẽ phải có ánh xạ cho mọi cấp độ, do đó ánh xạ đối tượng thực thể chứa đối tượng vùng trường. ánh xạ đối tượng vùng trường chứa một đối tượng und. und mapping mapping chứa item, vv ...

Tôi chỉ thực hiện điều này với các câu trả lời bộ phần còn lại json lồng nhau, chứ không phải xml, nhưng phải tạo bản đồ cho mỗi cấp.

một cái gì đó như thế này (cấp này là chưa đầy đủ bởi vì bạn sẽ cần một mối quan hệ đối với mọi cấp độ)

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

nhờ. tôi nhìn vào bản đồ này trong ánh xạ, nhưng nghĩ rằng nó khôn ngoan hơn (và dễ dàng hơn) để đơn giản hóa phản ứng của máy chủ. – Ted

Các vấn đề liên quan