ios - 如何在restkit-0.2中为相同的pathPattern添加不同的响应映射?

标签 ios mapping restkit-0.20

是否可以为同一pathPattern添加几个响应映射?

我有下一种情况:

获取请求:
RKEntityMapping * restDayMapping = [RestDay entityMapping];
RKResponseDescriptor * restDayDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:restDayMapping pathPattern:@“program / restdays” keyPath:@“rest_days” statusCodes:statusCodes];
[manager addResponseDescriptor:restDayDescriptor];

放置请求:
RKObjectMapping * restDayPutMapping = [RKObjectMapping requestMapping];
[restDayPutMapping addAttributeMappingsFromDictionary:@ {@“dayNumber”:@“restDays.dayNumber”}]];

RKRequestDescriptor * restDayPutDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:[restDayPutMapping inverseMapping] objectClass:[UserProgram class] rootKeyPath:@“rest_days”];
[manager addRequestDescriptor:restDayPutDescriptor];

因此,这两个映射都是通过相同的路径模式发送的:@“program / restdays”
但是对于第一个GET请求服务器端,返回json:

{“rest_days”:[{“dayNumber”:1},{“dayNumber”:4},{“dayNumber”:2}]}。

对于第二个PUT请求,json:

{“成功”:“真实”}

我如何配置我的restkit映射?
谢谢。

编辑:
升级restkit库,发现了很棒的功能,方法被贬低了:

+(instancetype)responseDescriptorWithMapping:(RKMapping *)mapping
pathPattern:(NSString *)pathPattern
keyPath:(NSString *)keyPath
statusCodes:(NSIndexSet *)statusCodes

并添加了一个新的:

+(instancetype)responseDescriptorWithMapping:(RKMapping *)mapping
方法:(RKRequestMethod)方法
pathPattern:(NSString *)pathPattern
keyPath:(NSString *)keyPath
statusCodes:(NSIndexSet *)statusCodes

因此,现在我可以为不同的请求方法设置不同的映射。
谢谢大家的帮助。

最佳答案

您可以为同一路径模式使用2种不同的映射,只要它们用于不同的目的(例如GET和PUT)即可。只要一切正常,RestKit就需要能够分辨出要使用哪个。

但是,有两种方法可以进行PUT:

objectManager putObject:...

这将自动尝试将响应映射到源对象。因此,如果您希望收到状态回复,它将无法正常工作。另外,您可以使用RestKit为您进行序列化:
NSError* error;
NSDictionary *parameters = [RKObjectParameterization parametersWithObject:object requestDescriptor:requestDescriptor error:&error];
NSData *JSON = [RKMIMETypeSerialization dataFromObject:parameters MIMEType:RKMIMETypeJSON error:&error];

然后自己输入结果(使用RestKit类或NSURLConenction)。

最好的选择是使用RKObjectRequestOperation,从技术上讲,您不会在相同的路径模式下使用映射,但是您可以使用映射来创建请求和处理响应。

关于ios - 如何在restkit-0.2中为相同的pathPattern添加不同的响应映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676318/

相关文章:

ios - AppDelegate 没有响应 NSNotification

iphone - 大量使用 NSLog 会产生成本吗?

java - Orika 映射到 Hibernate 实体抛出异常

java - 使用 osm 文件或 osm 预下载图 block 的开源 Java map 查看器

ios - RestKit 0.2,多种方式发起GET、POST、PUT请求

ios - RestKit 0.23.3 : mapping same key twice (or even more often) does not work

ios - RestKit 获取请求 block (删除孤立对象)

iphone - typedef enum 语句在 Objective-C 中放在哪里?

ios - 如何构造uiview以显示类似于Instagram的用户评论

iOS RestKit - 映射结果,只有一个属性