iOS: no se puede llamar al valor del tipo de function 'NSProgress'

Estoy intentando download un file usando Alamofire, con progreso. Pero obtengo este error en la línea de progress .

Cannot call value of non-function type 'NSProgress'

¿Cuál es el problema? ¡Todos los ejemplos que he visto, a saber, el oficial , hacen exactamente lo mismo!

 Alamofire.download(.GET, nsurl!.absoluteString, destination: { (temporaryURL, response) in return filepath }) .progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) in // <------ ERROR HERE dispatch_async(dispatch_get_main_queue(), { self.progressBar?.progress = totalBytesRead / totalBytesExpectedToRead }) } .response { (request, response, _, error) in self.loadImageFromFile(filepath.absoluteString) } 

introduzca la descripción de la imagen aquí

EDITAR:

Después de la sugerencia de @mvoelkl, agregué paréntesis a la function de progreso. Pero el resultado se mantuvo igual: introduzca la descripción de la imagen aquí

Espero que este problema se solucione al actualizar tu Alamofire pod .

Aquí menciona este problema: – https://github.com/SwiftyJSON/Alamofire-SwiftyJSON/issues/40

Esto funcionó para mí.

 Alamofire.download(.GET, nsurl!.absoluteString, destination: { (temporaryURL, response) in return file path }) .progress { bytesRead, totalBytesRead, totalBytesExpectedToRead in let status = Float(totalBytesRead/totalBytesExpectedToRead) dispatch_async(dispatch_get_main_queue(), { self.progressBar?.progress = status }) } .response { (request, response, _, error) in self.loadImageFromFile(filepath.absoluteString) } 

Lo que no funciona en lo anterior es totalBytesExpectedToRead . A veces devuelve -1, por lo que puede necesitar enchufar el tamaño del file que está descargando sin recurrir a Alamofire.

Para mí, la solución era agregar Float alnetworkingedor de progress.fractionCompleted, así que utilícelo así:

 .uploadProgress{ progress in self.updateProgressBar(imagesToDo: images.count, prog: Float(progress.fractionCompleted)) } 

gracias a: https://github.com/Alamofire/Alamofire/issues/1652#issuecomment-259020449

Tuvo el mismo problema, solucionado usando el siguiente código:

 Alamofire.upload(.PUT, url, file: file) .progress({ (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in print("test") }) 

Tenga en count los paréntesis agregados para .progress (), lo encontró generando el código auxiliar con Xcode. Parece que hay un error en la documentation, si puede confirmar esto deberíamos presentar un problema en GitHub;)

Este problema también me molestó. Fue causado por un problema ambiguo con NSURLRequest.progress y Alamofire.Request.progress.

Para solucionar el problema, modifiqué la fuente de Alamofire.

Abra Alamofire / Request.swift (v3.4.x)

En la línea 141, cambie el nombre de la function a algo que no es progreso, elegí requestProgress.

De:

 public func progress(closure: ((Int64, Int64, Int64) -> Void)? = nil) -> Self { 

A:

 public func requestProgress(closure: ((Int64, Int64, Int64) -> Void)? = nil) -> Self { 

Proceda a usar la function como antes sin problemas de comstackdor.