映射后向 RestKit 映射结果字典添加值

Posted

技术标签:

【中文标题】映射后向 RestKit 映射结果字典添加值【英文标题】:Add values to RestKit mapping result dictionary after mapping 【发布时间】:2014-03-03 14:37:17 【问题描述】:

我使用 RestKit 0.20 调用端点。此端点需要一个包含签名的参数,作为一种验证。此签名取决于请求参数:例如,如果我们要发送"foo": 1, "bar": 2,则签名计算为hash("somesecretfoo1bar2"),然后应将其添加到有效负载中,使其最终类似于"foo": 1, "bar": 2, "sig": "oursignature"

我不确定使用 RestKit 实现这一目标的最佳方法是什么。我可以将它挂接到每个单独的请求描述中,但由于每个请求的处理过程相同,所以我想在映射完成后将其挂接到请求操作中。

我该怎么做?

我研究过重载RKObjectRequestOperation,但看不到确切的放置位置,以及我是否仍然可以使用RKObjectManagerappropriateObjectRequestOperationWithObject

【问题讨论】:

【参考方案1】:

我会考虑修改您的数据模型类,可能使用一个公共超类,以便您拥有一个可以在映射中使用的- (NSString *)sig 方法。此方法可以收集将要发送的所有键和值(可能使用dictionaryWithValuesForKeys:)。

这应该比尝试修改 RestKit 类更容易,更易于维护。

另一种方法,而不是尝试继承 RKObjectRequestOperation,将继承 RKNSJSONSerialization 并将子类设置为序列化程序以在对象管理器 ([RKMIMETypeSerialization registerClass:forMIMEType:]) 上使用。

然后,您可以实现dataFromObject:error: 对传递的object 进行变异,处理内容并添加新的键/值对,然后调用super

【讨论】:

这样会好很多。不幸的是,这些类并不知道它们将始终映射到什么键,并且并非所有键都一直使用,所以我认为我不能这样做。

以上是关于映射后向 RestKit 映射结果字典添加值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 RestKit 将日期组件字典映射到 NSDate

为浅层路由寻求最佳 RestKit/CoreData 映射和 JSON 结构的建议

RestKit JSON 映射

IOS - RESTKIT - 以多种方式映射结果

RestKit 添加属性映射和关系映射

使用 RESTKit 映射 iTunes 搜索 API 结果