2

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”转换为“NSString”的策略

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

4

1 回答 1

2

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

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

于 2012-06-29T07:41:54.657 回答