iOS: управление AFHTTPRequestOperationManager

В моем приложении я должен загрузить несколько файлов JSON, а затем сохранить эти URL-адреса в plist, как вы можете видеть в моем коде. После того, как я создаю «AFHTTPRequestOperationManager» и создаю цикл, в котором я добавляю некоторую операцию для чисел моего «url_list».

NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"url_json" ofType:@"plist"];
NSArray *url_list = [NSArray arrayWithContentsOfFile:plistPath];

self.manager = [AFHTTPRequestOperationManager manager];

for (id element in url_list){

    NSURL *url = [NSURL URLWithString:element];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    op.responseSerializer = [AFHTTPResponseSerializer serializer];
    [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
    [self.manager.operationQueue addOperation:op];
}

Теперь этот код должен быть в порядке, но я хочу иметь две информации:

  • как узнать значение прогресса моего «менеджера»?, потому что я хочу знать состояние всей операции в одном значении прогресса

  • Я хочу знать, когда операция завершится, потому что, когда операция завершится, я должен передать «responseObject» методу, который анализирует эти данные.

Можете вы помочь мне?


person cyclingIsBetter    schedule 26.02.2014    source источник


Ответы (1)


Взгляните на документацию по пакетной обработке AFNetworking:

https://github.com/AFNetworking/AFNetworking#batch-of-operations

Это дает вам возможность назначить блок выполнения, который вызывается при завершении одной операции, и, кроме того, вы можете назначить блок завершения, который будет вызываться после завершения всех операций.

Если вам нужно, вы все равно можете назначить блок завершения на одну операцию для анализа responseObjects.

person Grzegorz Krukowski    schedule 26.02.2014
comment
Спасибо, я вижу вашу ссылку, и все в порядке, но я не понимаю, как установить значение прогресса для всей операции для этого «NSArray *operations» - person cyclingIsBetter; 26.02.2014
comment
progressBlock: ^ (NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations). Оба параметра передаются каждый раз после завершения одной из операций. - person Grzegorz Krukowski; 26.02.2014
comment
точно - так просто - person Grzegorz Krukowski; 26.02.2014