gpt4 book ai didi

ios - 将所有失败的传输排队

转载 作者:行者123 更新时间:2023-11-28 22:20:41 24 4
gpt4 key购买 nike

我正在编写一个需要向服务器发送一些 XML 的客户端/服务器应用程序。

NSMutableArray *operations = [NSMutableArray array];
AFHTTPRequestOperation *operation1 = [[AFHTTPRequestOperation alloc] initWithRequest:theRequest];

[operation1 setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
float progress = (float)totalBytesRead / totalBytesExpectedToRead;
NSLog(@"Progress 1 = %f",progress);
}];
[operations addObject:operation1];

AFHTTPRequestOperation *operation2 = [[AFHTTPRequestOperation alloc] initWithRequest:theRequest];

[operation2 setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
float progress = (float)totalBytesRead / totalBytesExpectedToRead;
NSLog(@"Progress 2 = %f",progress*100);
}];
[operations addObject:operation2];






NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
// Set the max number of concurrent operations (threads)
[operationQueue setMaxConcurrentOperationCount:3];
[operationQueue addOperations:@[operation1, operation2] waitUntilFinished:NO];

我现在要做的是处理传输失败的情况,并有一个队列,以便它重试发送。

使用 AFNetworking 库实现此目的的最佳方法是什么?

最佳答案

首先,再次重试失败的操作并不是很明智。根据错误的来源,您可能会面临严重的副作用,例如重复提交。

您已经在使用 AFHTTPRequestOperation,因此最简单的解决方案是调用 setCompletionBlockWithSuccess:failure:并处理“失败” block 中的错误。毕竟您可能还想在下载成功完成时使用“成功” block 。

关于您提供的代码的最后一个细节:您在第 1 行中创建了 NSArray *operations - 但是您没有将它用于任何事情,因为您在最后一行中创建了一个新的操作数组。所以要么你遗漏了一些东西,要么你应该简化它。

关于ios - 将所有失败的传输排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20494361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com