AFNetworking呼び出しenqueueBatchOfHTTPRequestOperationsを使用して、ファイルのリストをWebサーバーからiPadにダウンロードするメソッドがあります。時々、操作が失敗します(通常はファイルが大きい場合)。これまで、私は各ファイルを個別にダウンロードし、特定の再試行回数まで操作を再度呼び出すだけでした。
enqueueBatchOfHTTPRequestOperationsを使用するようにコードをリファクタリングしました。これはうまく機能しますが、「特定の」操作の失敗に関する通知を受け取る方法がわかりません。また、失敗した場合にそれらをキューに再度追加する方法もわかりません。
「n」個のファイルをダウンロードするために使用しているコードは次のとおりです。
NSMutableArray *operationsArray = [[NSMutableArray alloc]init];
for (MINPageDefinition *currPage in [[MINPageStore sharedInstance] pageArray])
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *serverLibraryURL = [defaults objectForKey:kRootURL];
serverLibraryURL = [serverLibraryURL stringByAppendingPathComponent:kPageDefinitionsDirectory];
serverLibraryURL = [serverLibraryURL stringByAppendingPathComponent:currPage.pageImageName];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:serverLibraryURL]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:currPage.pageImageURL append:NO];
[operationsArray addObject:operation];
}
if ([operationsArray count] > 0)
{
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@""]];
void (^progressBlock)(NSUInteger numberOfCompletedOperations, NSUInteger totalNumberOfOperations) = ^(NSUInteger numberOfCompletedOperations, NSUInteger totalNumberOfOperations) {
NSLog(@"%d proccesses completed out of %d", numberOfCompletedOperations, totalNumberOfOperations);
};
void (^completionBlock)(NSArray *operations) = ^(NSArray *operations) {
NSLog(@"All operations completed");
};
[client enqueueBatchOfHTTPRequestOperations:operationsArray
progressBlock:progressBlock
completionBlock:completionBlock];
}
以前、操作を実行するメソッドがありました。失敗すると、失敗ブロックはそれ自体を再帰的に呼び出します。操作が失敗した場合に最大「n」回再試行するようにこのコードを変更するにはどうすればよいですか?