Quiero mostrar una barra de progreso mientras se está realizando una descarga con NSURLConnection. Como estoy recibiendo datos del servidor, podría actualizar la interfaz de usuario para cada paquete recibido. Pero el problema es: ¿cómo averiguo cuántos datos ya tengo y cuántos datos hay que descargar? Probablemente en bytes ... ¿Y luego tengo que hacer algunas matemáticas para obtener el porcentaje?¿Cómo hacer una barra de progreso para una NSURLConnection al descargar un archivo?
24
A
Respuesta
63
En su delegado NSURLConnection
, implemente algo así para conocer la longitud total del contenido. El servidor tiene que apoyar esto, pero es muy probable que no tendrán ningún problema con el contenido estático:
- (void)connection: (NSURLConnection*) connection didReceiveResponse: (NSHTTPURLResponse*) response
{
statusCode_ = [response statusCode];
if (statusCode_ == 200) {
download_.size = [response expectedContentLength];
}
}
y luego actualizar el progreso de esta manera:
- (void) connection: (NSURLConnection*) connection didReceiveData: (NSData*) data
{
[data_ appendData: data];
download_.progress = ((float) [data_ length]/(float) download_.size);
// Broadcast a notification with the progress change, or call a delegate
}
En mi caso tengo una instancia de descarga que tiene size
y progress
propiedades. Son propiedad de un objeto global DownloadManager
que se ocupará de notificar a las partes interesadas el progreso de la descarga o los cambios de estado.
Cuestiones relacionadas
- 1. Mostrando una barra de progreso al descargar un archivo desde el servidor
- 2. Cómo hacer una barra de progreso
- 3. ¿Cómo hacer una barra de progreso personalizada en Android?
- 4. ¿Cómo descargar varios archivos en VB6 con barra de progreso?
- 5. ¿Puede ffmpeg mostrar una barra de progreso?
- 6. cómo codificar una barra de progreso
- 7. ¿Cómo descargar un archivo en una cadena con una devolución de llamada de progreso?
- 8. NSURLConnection descargar archivo grande (> 40MB)
- 9. Crear una barra de progreso de archivo en PHP
- 10. Barra de progreso para AVAssetExportSession
- 11. Hacer una extensión de Chrome descargar un archivo
- 12. Actualizar una barra de progreso en mathematica
- 13. ¿Cómo puedo cargar un archivo a través de ASP.NET MVC y mostrar una barra de progreso?
- 14. archivo barra de progreso de carga
- 15. Delphi XE2 DataSnap - Descargar archivo a través de TStream con barra de progreso
- 16. ¿Cómo copiar un archivo en Python con una barra de progreso?
- 17. Descargar progreso en HTML5
- 18. Página AJAX Descargar progreso
- 19. Quiero una barra de progreso pero obtengo un spinner progressdialog
- 20. Agregar una barra de progreso en WebView
- 21. Cómo usar NSURLRequest/NSURLConnection para descargar un archivo mp3 a la aplicación?
- 22. ¿Cómo se llama una barra de progreso de bucle?
- 23. ¿Cómo puedo hacer una barra de progreso (copiar cp un directorio)?
- 24. Haciendo una Barra de Progreso Skinny Customizada/barra de búsqueda
- 25. ¿Cómo hago una barra de progreso de marquesina en WPF?
- 26. ¿Cómo puedo agregar una barra de progreso a WWW :: Mechanize?
- 27. Agregar una barra de progreso a un ListView/OnClick llamado una sola vez
- 28. barra de progreso circular
- 29. Hacer pantalla de bienvenida con barra de progreso como Eclipse
- 30. Usando un proxy para NSURLConnection