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】:你是什么get
ting?如果你要拉下对象,你应该使用 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 委托的主要内容,如果未能解决你的问题,请参考以下文章