Eine Datei / ein Bild mit AFNetworking unter iOS herunterladen?
Ich dachte, ich hätte es herausgefunden, aber ich kann es einfach nicht zum Laufen bringen. Ich habe eine Methode, die für jede URL in einem Array aufgerufen wird. Diese Methode enthält eine URL eines Bilds, das in einem bestimmten Pfad in einem Anwendungsunterstützungsordner für die Offline-Verwendung heruntergeladen werden soll. Aber vielleicht interpretiere ich die Methoden in der AFNetwork-Bibliothek falsch. Meine Methode sieht so aus:
- (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 ist der direkte Link zu dem Bild, das ich herunterladen möchte.
Da diese Methode für alle Images aufgerufen wird, werden alle Protokolle mehrmals aufgerufen und scheinen korrekt zu sein.