RestKit 处理重叠的 RKRequest 委托

Posted

技术标签:

【中文标题】RestKit 处理重叠的 RKRequest 委托【英文标题】:RestKit Handling overlapping RKRequest Delegates 【发布时间】:2012-08-29 14:21:55 【问题描述】:

我有几个 RestKit 都使用相同的格式:

[[RKClient sharedClient] get:endString queryParameters:params delegate:self];

我有一个 masterMethod,它基本上刷新了我所有用户的静态数据,看起来像这样

-(void)masterMethod

[self get1];
[self get2];
[self get3];
[self get4];
[self get5];

所有获取的格式都与上述格式相同。所有这些代码都在一个包含委托方法的类中:

- (void)request:(RKRequest*)request didLoadResponse:(RKResponse*)response

但是,当我尝试以相同的方法调用所有 give get 时,我认为出现了问题。就好像委托 didLoadResponse 和 didRecieveResponse 方法重叠或获得释放或其他东西。有没有办法让一个主队列来处理这个巨大的呼叫?还是有其他问题。

我在 masterMethod 调用的某处遇到 BAD_ACCESS 错误。

谢谢,非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

你是什么getting?如果你要拉下对象,你应该使用 isKindOfClass 方法来区分objectLoader:didLoadObjects 中的对象并进行适当的设置。

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects 

    if ([[objects objectAtIndex:0] isKindOfClass:[Apple class]]) 

        Apple *apple = [objects objectAtIndex:0];

    
    else if ([[objects objectAtIndex:0] isKindOfClass:[Banana class]]) 

        Banana *banana = [objects objectAtIndex:0];

    

如果您从请求响应中提取数据,请查看在请求对象上设置用户数据,然后检查 request:didLoadResponse 中的用户数据。如需更多信息,请参阅RestKit: distinguish multiple requests in didLoadResponse:。

【讨论】:

我并不是想区分接收到的对象,而是要确保分别调用 didLoadResponse:(RKResponse*)response。 它们不是单独调用的。 RestKit 调用都是异步执行的。如果您需要进行同步调用,您可能应该重新考虑调用的逻辑。话虽如此,它可以使用块来完成。这是一个例子。 ***.com/a/11836265/654870 为什么有参数的Block没有get? 可以,但由于某种原因,restKit 在其获取中没有包含块的 queryParameters 选项。 好的,我明白你在问什么。不确定。在这种情况下,也许您可​​以将参数附加到 URL 的末尾?

以上是关于RestKit 处理重叠的 RKRequest 委托的主要内容,如果未能解决你的问题,请参考以下文章

RestKit:如何将 RKRequest 正文字符串从 JSON 更改为纯文本?

Restkit:重试失败的请求

RestKit 连接失败委托

RestKit - 如何排队资源加载?

如何在 RestKit 0.20.x 中指定多任务支持?

Restkit 0.20.rc 需要但不包含多个 0.10 项