AFNetworking下载队列

时间:2014-04-25 12:33:12

标签: ios objective-c cocoa-touch afnetworking afnetworking-2

我无法找到使用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;
    }];
}

我知道这是不对的,因为我得到了异步回调。那么也许有人可以建议如何实现这一目标?也许使用队列或类似的东西?

提前感谢您的帮助!

1 个答案:

答案 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) {

    }];
}