映射后向 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
,但看不到确切的放置位置,以及我是否仍然可以使用RKObjectManager
的appropriateObjectRequestOperationWithObject
。
【问题讨论】:
【参考方案1】:我会考虑修改您的数据模型类,可能使用一个公共超类,以便您拥有一个可以在映射中使用的- (NSString *)sig
方法。此方法可以收集将要发送的所有键和值(可能使用dictionaryWithValuesForKeys:
)。
这应该比尝试修改 RestKit 类更容易,更易于维护。
另一种方法,而不是尝试继承 RKObjectRequestOperation
,将继承 RKNSJSONSerialization
并将子类设置为序列化程序以在对象管理器 ([RKMIMETypeSerialization registerClass:forMIMEType:]
) 上使用。
然后,您可以实现dataFromObject:error:
对传递的object
进行变异,处理内容并添加新的键/值对,然后调用super
。
【讨论】:
这样会好很多。不幸的是,这些类并不知道它们将始终映射到什么键,并且并非所有键都一直使用,所以我认为我不能这样做。以上是关于映射后向 RestKit 映射结果字典添加值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 RestKit 将日期组件字典映射到 NSDate