我的后端返回这种JSON文件:
{ “回应”:{ “消息”:“测试” }, “responseCode”:205 }
根据responseCode值,内部响应的内容是不同的。 我知道我必须使用类似RKDynamicMapping的东西,但不知道如何。 我看到的问题是,在示例代码和手册中,用于区分映射的属性在内部,但在这种情况下是在外部。 我试过这个但是不起作用:
[dynamicMapping setObjectMappingForRepresentationBlock:^RKObjectMapping *(id representation) {
NSNumber* responseCode=(NSNumber*)representation[@"responseCode"];
if (responseCode.integerValue==204) {
return searchByLocatorResponseContent204Mapping;
} else if (responseCode.integerValue==205) {
return searchByLocatorResponseContent205Mapping;
}
return nil;
}];
RKResponseDescriptor *searchByLocatorResponseContentResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:dynamicMapping pathPattern:kCheckinSearchByLocatorPath keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:searchByLocatorResponseContentResponseDescriptor];
我想是因为我想要更改的映射不包含用于区分它们的属性(例如来自rest kit网站的女孩/男孩样本代码中的类型)
有人有任何建议吗? 提前谢谢。
答案 0 :(得分:0)
如果你这样设置,restkit期望dynamicMapping
将提供整个响应json的映射,而不仅仅是'response'的内容。
基本上searchByLocatorResponseContent204Mapping
需要有response
字段和responseCode
字段的映射。
据我所知,restkit无法向外看,因为representation
参数只为您提供当前上下文内的信息。但是,它位于路线图上,并且已经有一张关于此的票:https://github.com/RestKit/RestKit/issues/1327