我正在尝试从服务器xml发出地图错误响应。在restkit的0.21版中,它运行正常。在上一个版本中它没有(0.22及以上)。服务器可能的响应是<authorization-fail/>
。许多服务器功能都可以导致此响应。
+ (void)addAuthErrorMapping:(RKObjectManager*)objectManager
{
RKObjectMapping* errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]];
[errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil
toKeyPath:@"errorMessage"]];
RKResponseDescriptor* errorResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:errorMapping
method:RKRequestMethodGET
pathPattern:nil
keyPath:@"authorization-fail"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:errorResponseDescriptor];
}
在0.21版本中,我收到带有authorisation-fail
密钥的字典。在最后的版本中,结果是空字典。
答案 0 :(得分:0)
这应该永远不会奏效。
服务器应该使用非2xx HTTP响应代码向您返回响应,并且您应该使用该代码来触发响应描述符。
实际上,您一直在触发响应描述符并告诉它寻找 - 并深入研究 - authorisation-fail
。因此,如果该密钥存在但是为空,则应该RKErrorMessage
为空。
如果你有一些其他响应描述符与之前的响应匹配(即任何其他具有nil路径模式和成功响应代码的响应)那么这个将永远不会工作,这就是为什么你得到一个空字典
因此,最好的选择是更改服务器响应,解决方法是使用动态映射来检查内容并提供良好的响应或要使用的错误映射。