errorMapping定义为:

[[[[RKObjectManager sharedManager] mappingProvider] errorMapping] setRootKeyPath:@"error"];

它与简单的错误消息作为字符串一起使用时效果很好:
render status: :unprocessable_entity, json: { :error => 'cannot create topic' }

但是,哈希响应失败:
render status: :unprocessable_entity, json: { :error => @topic.errors }

并给出:

w ^
restkit.object_mapping:RKObjectMappingOperation.m:239:-[RKObjectMappingOperation
transformValue:atKeyPath:toType:]处的值转换失败
keyPath”。没有从“JKDictionary”转变为“JKDictionary”的策略
'NSString'

有没有办法配置RestKit的errorMapping接受哈希响应(并希望存储在NSDictionary中)?

最佳答案

我假设您使用的是默认错误映射?这会将错误键路径映射到RKErrorMessage类。此类需要一个NSString,但是您有一个NSDictionary(JKDictionary,因为您正在使用JSONKit,但仍然...)。

如果您不想修改服务器代码,则可以在iPhone上创建自己的错误类,并替换此默认映射。例如,您可以看到RKErrorMessage.m以及创建默认映射的[RKObjectManager init]。

10-08 06:27