【问题标题】:iOS: manage a AFHTTPRequestOperationManageriOS:管理一个 AFHTTPRequestOperationManager
【发布时间】:2014-02-26 09:00:27
【问题描述】:

在我的应用程序中,我应该下载一些 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”传递给解析此数据的方法

你能帮帮我吗?

【问题讨论】:

    标签: ios objective-c afnetworking-2 afhttprequestoperation


    【解决方案1】:

    查看 AFNetworking 批处理文档:

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

    它为您提供了分配进度块的选项,该块在单个操作完成时调用,此外您还可以分配完成块,当所有操作完成时将调用该块。

    如果您需要,您仍然可以将完成块分配给单个操作以解析响应对象。

    【讨论】:

    • 谢谢,我看到了你的链接,很好,但我不明白如何为这个 'NSArray *operations' 的所有操作设置进度值
    • progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations)。每次操作完成时都会传递这两个参数
    • 完全正确 - 就这么简单
    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    相关资源
    最近更新 更多