3

我的后端返回这种 JSON 文件:

{“响应”:{“消息”:“测试”},“响应代码”: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 网站的女孩/男孩示例代码)

有人有什么建议吗?提前致谢。

4

1 回答 1

0

如果您像这样设置它,restkit 预计dynamicMapping将为整个响应 json 提供映射,而不仅仅是“响应”的内容。

基本上searchByLocatorResponseContent204Mapping需要对response字段和responseCode字段进行映射。

据我所知,restkit 不能向外看,因为该representation参数只为您提供当前上下文内部的信息。但是,它在路线图上,并且已经有一张票:https ://github.com/RestKit/RestKit/issues/1327

于 2013-06-10T22:24:19.123 回答