Pomyślałem, że to wymyśliłem, ale po prostu nie mogę go uruchomić. Mam metodę, która jest wywoływana na każdym adresie URL w tablicy. Ta metoda ma adres URL obrazu, który powinien zostać pobrany w określonej ścieżce w folderze Support Application do użytku w trybie offline. Ale może błędnie interpretuję metody w bibliotece AFNetwork. Moja metoda wygląda następująco:Pobierz plik/obraz za pomocą AFNetworking w systemie iOS?
- (void) downloadImageInBackground:(NSDictionary *)args{
@autoreleasepool {
NSString *photourl = [args objectForKey:@"photoUrl"];
NSString *articleID = [args objectForKey:@"articleID"];
NSString *guideName = [args objectForKey:@"guideName"];
NSNumber *totalNumberOfImages = [args objectForKey:@"totalNumberOfImages"];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:photourl]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.inputStream = [NSInputStream inputStreamWithURL:[NSURL URLWithString:photourl]];
[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:^{
DLog(@"PROBLEMS_AF");
}];
DLog(@"URL_PHOTOURL: %@", photourl);
DLog(@"indexSet: %@", operation.hasAcceptableStatusCode);
[operation response];
NSData *data = [args objectForKey:@"data"];
NSString *path;
path = [NSMutableString stringWithFormat:@"%@/Library/Application Support/Guides", NSHomeDirectory()];
path = [path stringByAppendingPathComponent:guideName];
NSString *guidePath = path;
path = [path stringByAppendingPathComponent:photourl];
if ([[NSFileManager defaultManager] fileExistsAtPath:guidePath]){
[[NSFileManager defaultManager] createFileAtPath:path
contents:data
attributes:nil];
}
DLog(@"path: %@", path);
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation start];
DLog(@"isExecuting: %d",[operation isExecuting]);
DLog(@"IS_FINISHED: %d",[operation isFinished]);
}
}
PhotoURL jest bezpośredni link do zdjęcia, które chcę, aby pobrać.
Ponieważ ta metoda jest wywoływana dla wszystkich obrazów, wszystkie dzienniki są wywoływane kilka razy i wydają się poprawne.
Ty wskazał mi prosto . Miałem pewne wątpliwości co do tego, co robię, dziękuję bardzo. –
dodatkowe: jeśli masz wiele żądań jednocześnie, rozważ użycie 'NSOperationQueue' (wszystkie klasy AFRequestOperation są zgodne z kodowaniem) i pozwól kolejce obsłużyć operacje. może się to przydać i nie wystrzeli 100 żądań w tym samym czasie. – choise
Ile wniosków może zwykle obsługiwać aplikacja bez implementacji NSOperationQueue ?, to nigdy nie będzie więcej niż 50 żądań, czy to wystarczająco, że warto ją wdrożyć? –