In my app I should download some JSON files, then I store these URL in a plist as you ca see in my code. After I create an 'AFHTTPRequestOperationManager' and I create a loop where I add some operation for the numbers of my '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];
}

Now this code should be fine, but I want to have two information:

  • what's the way to know the progress value of my 'manager'?, because I want to know the state of all operation in a single progress value

  • I want to know when an operation finish, because when an operation finish I should pass 'responseObject' to a method that parse this data

Can you help me?

有帮助吗?

解决方案

Take a look at AFNetworking batching documentation:

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

It gives you an option to assign progress block which is called on single operation completion and on top of that you can assign completion block which will be called when all operations are completed.

If you need you can still assign completion block to single operation to parse responseObjects.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top