Pensé que lo había resuelto, pero no puedo hacerlo funcionar. Tengo un método que se llama en cada URL de una matriz. Este método tiene una URL de una imagen que debe descargarse en una ruta específica en una carpeta de soporte de aplicaciones para su uso sin conexión. Pero tal vez estoy malinterpretando los métodos en la biblioteca AFNetwork. Mi método es el siguiente:¿Descargue un archivo/imagen con AFNetworking en 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 es el enlace directo a la imagen que quiero descargar.
Como se utiliza este método para todas las imágenes, todos los registros se llaman varias veces y parecen ser correctos.
Me apuntaba directamente . Tenía algunas dudas sobre lo que estaba haciendo, muchas gracias. –
adicional: si tiene varias solicitudes a la vez, considere el uso de 'NSOperationQueue' (todas las clases de AFRequestOperation son compatibles con la codificación) y deje que la cola maneje las operaciones. esto podría ser útil y no disparará 100 solicitudes al mismo tiempo. – choise
¿Cuántas solicitudes puede manejar una aplicación sin implementar NSOperationQueue ?, nunca serán más de 50 solicitudes, ¿es suficiente que valga la pena implementarla? –