是否可以为同一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/