iOS Asihttprequest seguimiento de progreso personalizado

Estoy tratando de mostrar el progreso de la descarga con AsiHttpRequest algo como esto: 300 kb / 5 Mb y actualizo constantemente el primer valor. Entendí que si uso -(void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data, necesito administrar yo mismo el objeto nsdata y escribir yo mismo el archivo descargado

¡He intentado esto pero no funciona! ¡Los datos mutables son nulos! Yo uso iOS 5 con ARC. ¡Gracias por cualquier ayuda!

ACTUALIZADO

Lo resolví con este código, configuré el delegado en uno mismo y todo funciona correctamente. Solo no entiendo si de esta manera y con ARC necesito borrar el delegado

- (void)dealloc
{
   [request clearDelegatesAndCancel];
}

Gracias a todos por la ayuda!!

ACTUALIZADO

-(void)downloadFile: (NSString*) file {
           NSString* urlFilePdf = [NSString stringWithFormat:@"http://www.mywebsite.com/%@",file];

            myFileName = file;

            NSURL *url = [NSURL URLWithString:urlFilePdf];

            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDirectory = [paths objectAtIndex:0];
            NSString *filePath = [documentsDirectory stringByAppendingPathComponent:file];


            progressAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"DOWNLOADFILE",nil) message:nil delegate:self cancelButtonTitle:nil otherButtonTitles: nil];

            progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(30.0f, 80.0f, 225.0f, 90.0f)];
            [progressAlert addSubview:progressView];
            [progressView setProgressViewStyle: UIProgressViewStyleDefault];

            lblTotal = [[UILabel alloc] initWithFrame:CGRectMake(5, 50, 273, 20)];
            [lblTotal setTextAlignment:UITextAlignmentCenter];
            [lblTotal setFont:[UIFont fontWithName:@"HelveticaNeue-Medium" size:14.0]];
            [lblTotal setTextColor:[UIColor whiteColor]];
            [lblTotal setBackgroundColor:[UIColor clearColor]];
            [progressAlert addSubview:lblTotal];

            requestFile = [ASIHTTPRequest requestWithURL:url];
            [requestFile setDelegate:self];
            [requestFile setDownloadDestinationPath:filePath];
            [requestFile setDownloadProgressDelegate:self];
            [requestFile setShowAccurateProgress:YES];    
            [progressAlert show];

            [requestFile startAsynchronous];

}

- (void)request:(ASIHTTPRequest *)request incrementDownloadSizeBy:(long long)newLength
{
    NSLog(@"%@",[NSString stringWithFormat:@"incrementDownloadSizeBy %quKb", newLength/1024]);
}

- (void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes
{
    NSLog(@"%@",[NSString stringWithFormat:@"didReceiveBytes %quKb", bytes/1024]);
    currentLength += bytes;
    [lblTotal setText:[NSString    stringWithFormat:@"%quKb/%@",currentLength/1024,self.TotalFileDimension]];
}

- (void)setProgress:(float)newProgress {
    NSLog(@"%f",newProgress);
    progressView.progress = newProgress;
}


-(void) requestFinished:(ASIHTTPRequest *)request
{
    // code ...
}

-(void) requestFailed:(ASIHTTPRequest *)request
{
    // code ...
}

- (void)dealloc
{
   [request clearDelegatesAndCancel];
}

preguntado el 03 de mayo de 12 a las 15:05

Hasta donde yo sé, cuando decide guardar manualmente los datos, también debe manejar manualmente el progreso verificando la longitud de los datos que se han recibido. En cuanto a cómo determinas la duración total final... No estoy seguro. -

Gracias Jacob, supuse que appendData almacenaría los datos descargados paso a paso. El -(void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data se llama constantemente y el tamaño de (NSData *)data si lo registro cambia por cierto. pero al final los datos recibidos son nulos -

1 Respuestas

Deberías implementar el request:incrementDownloadSizeBy: método.

Tenga en cuenta: El título de la pregunta que escribió es iOS Asihttprequest seguimiento de progreso personalizado. Si miras la documentación de ASIHTTPRequest, verá un encabezado que describe exactamente lo que está solicitando: Seguimiento de progreso personalizado.

Si no miraste esto, entonces es un gran problema. Siempre debe consultar la documentación antes de pedir ayuda a la gente.

contestado el 03 de mayo de 12 a las 19:05

Gracias Jim, siempre reviso la documentación antes de pedir ayuda. Pregunté porque traté de implementar sin éxito, siempre devuelve un error de descarga. Pedí entender si alguien ya usó este delegado con éxito. Gracias - Hw.Master

¿Un gran problema? ¿Como el calentamiento global o la hambruna? - Simon

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.