我已经使用了restkit 0.10一段时间了,现在我已经更新到了0.20,正在开发一个新项目。
使用此更新版本,didloadobject委托方法不再可用,我必须使用完成块来成功失败请求。
所以......基本上我想了解一下如何使用这些完成块的restkit以及当我需要做的几个请求时,如果每个请求都需要来自前一个请求的数据,那将是一个很好的干净方法。 / p>
例如,如果我有这个代码
请求1
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
[call request2WithDataFromThisRequest];
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"fail!");
}];
请求2
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
[call requestNWithDataFromRequest1];
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"fail!");
}];
这是我现在想的唯一方法..而且我不知道是否有更好的
感谢任何帮助。
问候!
答案 0 :(得分:0)
如果您需要使用先前请求中的数据,并且您需要在上一个请求完成后立即发送下一个请求,那么您需要执行类似的操作。将mappingResult
(或其某些内容)传递给下一个方法,以便它知道该怎么做。
我会说你的场景有点不规则,当然对于多个链式请求。大多数请求应该是用户驱动的,可能只需要一个请求......
答案 1 :(得分:0)
是的,我知道,我有一个银行应用程序的例子,我一直在努力,当用户按下继续或接受时,对服务器有不同的请求。
example:
request1: is it on stock market hours
request2: if(is on stock market hours) do .. get account data
request3: do invest with account data
也许我应该瞄准服务器自己做每个请求并返回最终结果..
答案 2 :(得分:0)
您可以使用另一个框架(例如Bolts-iOS)将您的请求包装在“任务”中,并将任务链接在一起,将一个响应输入下一个。
答案 3 :(得分:0)
使用NSOperationQueue和NSOperation。 您可以在NSOperations之间设置依赖关系。
依赖关系是以特定顺序执行操作的便捷方式。您可以使用addDependency:和removeDependency:方法为操作添加和删除依赖项。默认情况下,具有依赖关系的操作对象在其所有依赖操作对象完成执行之前不会被视为就绪。但是,一旦最后一个相关操作完成,操作对象就会准备好并能够执行。