iOS/AFNetworking 3.0:按顺序完成多个请求

iOS/AFNetworking 3.0: Complete multiple requests in order

下面的代码(示例代码)多次发送 API GET 请求。

 - (void)listOfPeople:(NSArray *)array {
            for (int i = 0; i < array.count; i++) {
                Person *person = [array objectAtIndex:i];

                [personClient getPersonData:person.fullName onSuccess:^(id result) {
                    // change data here

                } onFailure:^(NSError *error) {

                }];
            }
        }

该代码不能很好地工作,因为 API 请求每次都以不同的顺序完成。我需要按顺序完成每个 api 请求。我相信我需要等到完成块或失败块完成后再继续 for 循环。除非有更好的方法来完成这项任务,否则有人能指出我正确的方向吗?我试过调度组,但它没有按顺序完成每个请求。

摆脱 for 循环,取而代之的是创建一个递归函数,该函数从完成处理程序中调用自身以获取下一个 Person。这样当每个调用完成时,它会进行调用以获得下一个调用。

像这样:

- (void)getPersonFromArray:(NSArray *)array atIdx:(NSInteger)idx {
    if (idx < array.count)
    {
         Person *person = [array objectAtIndex:idx];
         [personClient getPersonData:person.fullName onSuccess:^(id result)    
            {
                // Do something useful with Person here...
                // ...
                [self getPersonFromArray:array atIdx(idx + 1)];
            } onFailure:^(NSError *error) {
                 // Handle errors here
                 // ...
            }];
    }
}