AFnetworking mehrere Dateien herunterladen
Ich verwende diesen code, um eine Schleife durch ein array mehrere Dateien herunterladen und auf die Festplatte schreibt.
-(void)download
{
//set url paths
for (NSString *filename in syncArray)
{
NSString *urlpath = [NSString stringWithFormat:@"http://foo.bar/photos/%@", filename];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlpath]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:filename];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Successfully downloaded file to %@", path);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[operation start];
aber das problem ist, es ruft die Erfolg-block nach jeder Datei fertig ist, (was es sollte), aber ich brauche nur ein letzter Aufruf wieder zu laden einige der Daten und am Ende ein Fortschritt HUD.
Alle Zeiger in die richtige Richtung wäre toll.
- Hey, Wo wollen Sie diese Funktion aufrufen? In der AppDelegate oder in einen bestimmten controller? Auch, was passiert, wenn die app beenden, bevor der download abgeschlossen ist? Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht eines Tages dies wird helfen, jemand, aber ich konnte einen workaround, der hat wohl größere Probleme, aber das ist okay für meine einfache Nutzung.
Ich gerade gelöscht haben, jeweils einer Zeile der sync array, nachdem es verarbeitet wurde, lief dann mein code, den ich brauchte.
Können Sie AFHTTPClient zu enqueueBatchOperations und hat eine completionBlock die aufgerufen wird, wenn alle Operationen abgeschlossen sind. Sollte genau das sein was du suchst.