objective-c - 如何配置 RestKit errorMapping 来接受更复杂的响应?

标签 objective-c ios restkit

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:] Failed transformation of value at keyPath ''. No strategy for transforming from 'JKDictionary' to 'NSString'

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

最佳答案

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

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

关于objective-c - 如何配置 RestKit errorMapping 来接受更复杂的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11257878/

相关文章:

objective-c - 在 cocoa 中以编程方式更改按钮的背景图像

ios - 在屏幕打开之前,重要的位置更改将不起作用

ios - 使用 RKObjectManager 而不是 RKRequestOperation 的 get 方法 - RestKit

ios - 如何使用 RestKit 发送 bool 值?

objective-c - 如何调用完成 block ?

ios - 初始化 super init 和其他

objective-c - iOS:在运行时以编程方式添加多个 UIImageView

ios - 工具栏位置从 View Controller 的底部更改为顶部

ios - 这是最好和最简单的 JSON 解析库

iphone - RestKit 根据值动态映射关系名称