【问题标题】:iOS package AFNetworking With queueiOS 包 AFNetworking 带队列
【发布时间】:2015-11-17 08:22:10
【问题描述】:

我想打包AFNetworking,以便url可以一一请求,但不知道如何打包。 例如,有三个url请求要发送到服务器,我希望AFNetworking先发送一个url请求,当第一个请求完成后,再发送下一个到服务器,以此类推。 我认为它可能需要 NSOperationQueue 来完成这项工作,但我不知道如何实现它。 有人写过这样的代码吗?能不能把.h和.m文件发给我,让我建模写或者直接用,非常感谢。

【问题讨论】:

    标签: ios objective-c afnetworking-2 nsoperationqueue


    【解决方案1】:

    如果您要发送图像之类的数据,您可能想要这样的东西。如果您只是发送简单的请求,那么只需使用事实上的 AFNetworking GET/POST 而不是multipartFormRequestWithMethod

    简而言之,为每个请求创建一个操作,并将每个请求添加到一个数组中。然后使用batchOfRequestOperations 执行每一项。 (From the docs)。

    NSMutableArray *mutableOperations = [NSMutableArray array];
    for (NSURL *fileURL in filesToUpload) {
        NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
            [formData appendPartWithFileURL:fileURL name:@"images[]" error:nil];
        }];
    
        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    
        [mutableOperations addObject:operation];
    }
    
    NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:mutableOperations progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {
        NSLog(@"%lu of %lu complete", numberOfFinishedOperations, totalNumberOfOperations);
    } completionBlock:^(NSArray *operations) {
        NSLog(@"All operations in batch complete");
    }];
    [[NSOperationQueue mainQueue] addOperations:operations waitUntilFinished:NO];
    

    【讨论】:

    • 非常感谢,方法正是我需要的,但我也想给队列一个限制条件,就是当第一个url请求返回成功数据时,再发送下一个url请求,否则,如果返回数据失败,则停止队列,不再发送下一个 url 请求。然后屏幕上会出现一个视图,上面有一个按钮,可以重试再次发送失败的url请求,如果这个url请求返回成功数据则发送下一个url请求,以此类推。可以用队列实现限制条件吗?以及使用 mainQueue 是否会暂停 UI?
    • 当然。有很多方法可以做到这一点。最粗暴的做法就是在前一个的成功块中执行下一个请求。如果其中任何一个失败,则启用重试按钮。您想要做的任何 UI(例如启用失败块中的重试按钮)只需使用 dispatch_async(dispatch_get_main_queue(), ^{ // code here }); 在主线程上运行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多