objective-c如何返回一个对象数组组合从一堆异步 HTTP 请求吗?

发布时间: 2016/10/2 1:34:05
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

一些成功的 HTTP 请求后想要返回 totalArray,在回调中,但只有在所有请求都已成功之后。经过一番研究之后,我发现我应该以某种方式使用东西像盛大中央调度或 NSLock,但不知道如何使用它们。怎么可以这样?

+ (void)httpRequestOnParameters:(NSURL*)url parametersArray:(NSArray*)parametersArray success:(Success)success failure:(Failure)failure {

    NSMutableArray* totalArray = [NSMutableArray new];
    for (NSDictionary* parameter in parametersArray) {
        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        [manager GET:[url absoluteString]
          parameters:parameter
             success:^(AFHTTPRequestOperation *operation, id responseObject) {

                 [totalArray addObject:responseObject];
             }
             failure:^(AFHTTPRequestOperation *operation, NSError *error) {
             }];
    }

    success(totalArray);
}

解决方法 1:

你可以尝试使用计数器被设置为 0 的第一个异步调用之前。在成功的代码块中,增加计数器的值,然后放置一个 if 块检查当计数器达到你所期望的大量异步调用。

counter = 0;
numAsyncCalls = x;
array = [ ];

asyncCall {
   mainCode: ...
   success: counter ++;
                  array.push(callResult);
                  if (counter == numAsyncCalls){
                     ''Execute desired code on
                     ''populated array[]
                  }
 }

这有意义吗?很抱歉如果这篇文章看起来相当之小,我在试穿我的 iPad 出堆栈交换应用程序。

赞助商