0

这个问题是关于将 RestKit 请求包装在自定义对象中,以及我是否可以保证在返回响应时,发送 RestKit 请求的对象也将用作委托。

我正在使用一个深奥的 REST API (Salesforce),而 RestKit 似乎不能很好地处理 Salesforce 的一些特性——例如,当您调用 Salesforce REST API 时,您可能会返回部分数据集,然后得到一个“nextRecordsUrl”,你必须遵循它才能获得下一个块。其他使用 Salesforce 和 REST 的人也遇到了同样的问题(参考https://groups.google.com/forum/#!msg/restkit/HJNjB7I6WVM/8u5n7nHoJQUJ)。我创建了一个类来包装对 Salesforce 的调用并自动跟踪这些链接,并正确处理返回的数据集。类实例将自己注册为 REST 调用的委托。

我编写的类本身就很好用(当只有一个实例时),但我将创建其他类并有几个实例需要独立处理它们的数据。我已经通读了文档和代码(这是一次学习经历,我现在只使用 ios 大约一个月了),但我看不出它是否可以保证特定实例会作为其代理响应单独请求,或者它可能会意外获取另一个实例的响应。

例如,假设我有实例 A 和 B,它们都使用 RKObjectLoader 发出请求,并使用loader.delegate = self;. 两者同时运行(异步)。这是我看到的潜在流程:

  1. A 的 RKObjectLoader 进行调用,将自己注册为代理以进行响应
  2. RestKit 框架向 A 发送请求
  3. B 的 RKObjectLoader 进行调用,将自己注册为代理以进行响应
  4. RestKit 框架发送对 B 的请求
  5. ... 等待 ...
  6. RestKit 框架得到响应,并以某种方式确定此响应来自 B 的请求,调用 B 作为委托
  7. B 委托方法被调用
  8. RestKit 框架得到响应,并以某种方式确定此响应来自 A 的请求,调用 A 作为委托
  9. 委托方法被调用

我看不出 RestKit 框架如何区分响应和请求,从而确保调用正确的委托实例。换句话说,在我看来,RestKit 可能会得到对请求的响应,然后调用它想要的任何委托……但这似乎违反直觉,而且框架作者似乎非常敏锐。

所以,我的问题:

  1. 如果我有一个使用 RKObjectLoader 的类实例并将自己设置为委托,我能否保证在该请求的响应到来时调用它?
  2. 您能否指出处理此问题的 RestKit 框架中的实际实现,以便我了解它是如何完成的?

非常感谢!

4

1 回答 1

0

我还没有收到这个问题的答案,但如果有人有同样的问题并遇到这个问题,答案是:是的,RestKit 似乎确实将正确的委托与传出请求相匹配。

我创建了一个小类(具有调用服务的 (NSString*) 标识符属性,并在委托中打印出带有结果的实例标识符。我确认实例 A 的委托方法正在处理实例 A 的调用,而 B 正在处理B,有几个同时通话。

于 2012-11-05T20:38:32.857 回答