와 객체의 매핑이 나는 객체로 응답 XML을 매핑 할과 같은 XML 보이는 : 내가 원하는 것은 resources
부분Restkit : XML
<list version="1.0">
<meta>
<type>resource-list</type>
</meta>
<resources start="0" count="168">
<resource classname="Quote">
<field name="name">Alpha</field>
<field name="price">10</field>
</resource>
<resource classname="Quote">
<field name="name">Beta</field>
<field name="price">9</field>
</resource>
</resources>
</list>
.
@interface Field : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSNumber *price;
@end
@interface Resources : NSObject
@property (nonatomic, strong) NSNumber *count;
@property (nonatomic, strong) NSArray *resource;
@end
문제는 다음과 같습니다 : 나는 Resources
의 resource
에 대한 매핑을 설정하는 방법을 모르는 나는 개체 모델을 만들 수 있습니다. 매핑이 완료
RKObjectMapping *objMapping = [RKObjectMapping mappingForClass:[Field class]];
[objMapping addAttributeMappingsFromArray:@[@"name",@"price"]];</br>
RKObjectMapping *resourcesMapping = [RKObjectMapping mappingForClass:[Resources class]];
[resourcesMapping addAttributeMappingsFromArray:@[@"count"]];
[resourcesMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"resource" toKeyPath:nil withMapping:objMapping]];
RKResponseDescriptor *descriptor = [RKResponseDescriptor responseDescriptorWithMapping:resourcesMapping method:RKRequestMethodGET pathPattern:@"XXXXXX" keyPath:@"list.resources" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
후, Resources
개체를 만들 : 나는 한 번 매핑을 사용했습니다. 그러나 그 배열 resource
은 여전히 nil입니다.
XML에서 리소스 배열을 가져 오는 방법은 무엇입니까?
RKObjectMapping *objMapping = [RKObjectMapping mappingForClass:[Field class]];
objMapping.forceCollectionMapping = YES;
[objMapping addAttributeMappingsFromDictionary:@{@"name":@"name.text"}];
가 나는 또한 키 패스와 respondscripter 업데이트입니다 -----
내가 코드를 업데이트 업데이트
--- : RKObjectManager
의 성공 블록에서 다음
RKResponseDescriptor *descriptor = [RKResponseDescriptor responseDescriptorWithMapping:objMapping method:RKRequestMethodGET pathPattern:@"XXXXX" keyPath:@"list.resources.resource.field" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
을, 매핑 결과에는 필드 배열이 있습니다. 문제는 Field
의 속성입니다. 모두 nil
입니다.
D restkit.object_mapping:RKMapperOperation.m:229 Asked to map source object (
{
name = name;
text = "alpha";
},
{
name = price;
text = "98.3";
}
) with mapping name.text>"
)>
2014-05-14 23:33:57.681 RestKitTest[5138:3307] D restkit.object_mapping:RKMappingOperation.m:859 Starting mapping operation...
2014-05-14 23:33:57.682 RestKitTest[5138:3307] W restkit.object_mapping:RKMappingOperation.m:338 Destination object rejected attribute value (
name,
price
) for keyPath name.text. Skipping...
XML의 속성이지도의 원본 개체의 값이되는 것 같다 :
나는 보이는 로그를 확인하십시오. 어떻게 이런 종류의 객체를 파싱하도록 구성을 설정합니까?
코드를 업데이트하여 RKLog를 추가합니다. 지도 원본 개체를 가져 오지만 매핑을 만들지 못했습니다. 좀 봐 주시겠습니까? – scorpiozj
당신은 나의 지시를 따르지 않았습니다 - 'list.resources.resource.field'의 주요 경로는 어디에서 왔습니까? 또한 XML을 보면 모든 것이'field' 태그이므로 불가능할 수도 있습니다. 즉, 필드 사전 배열을 처리하고 내용을 추출하는 코드를 스스로 작성해야 할 필요가 있음을 의미합니다. RestKit을 사용하지 않는 것이 좋습니다. – Wain
사실'list.resources, resource, field'를 사용할 수없는 이유를 잘 모르겠습니다. 그러나 참조 할 때, 그것은 속성 사전의 배열이고'RestKit'의 매핑없이 구문 분석을 시도합니다. – scorpiozj