我无法找到使用AFNetworking 2.0下载队列中对象的方法。
我有一系列ID。我想用数组中的最后一个对象发出请求,当这个请求完成时,发出第二个请求,第三个请求,等等。但是如果至少有一个请求失败,我需要停止。
while ([dataArray count] > 0) {
[[APIClient sharedClient] POST:@"/api/my_object.json" parameters:@{@"obj":[dataArray lastObject]} success:^(NSURLSessionDataTask *task, id responseObject) {
[dataArray removeLastObject];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
break;
}];
}
我知道这是不对的,因为我得到了异步回调。那么也许有人可以建议如何实现这一目标?也许使用队列或类似的东西?
提前感谢您的帮助!
答案 0 :(得分:1)
您的解决方案是在当时发出一个请求。这意味着,只有从最后一个获得结果时才开始新请求。
这样的事情:
-(void) makeNextRequest {
__typeof__ (self) __weak weakSelf = self;
[[APIClient sharedClient] POST:@"/api/my_object.json" parameters:@{@"obj":[dataArray lastObject]} success:^(NSURLSessionDataTask *task, id responseObject) {
[dataArray removeLastObject];
[weakSelf makeNextRequest];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
}];
}