iOS - 无法调用非功能类型的值' NSProgress'

时间:2016-07-12 10:56:44

标签: ios swift alamofire

我尝试使用Alamofire下载文件,并取得进展。但我在progress行收到此错误。

Cannot call value of non-function type 'NSProgress'

问题是什么?我见过的所有例子,即the official one,都做同样的事情!

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)
}

enter image description here

编辑:

在@mvoelkl的建议之后,我在进度函数中添加了括号。但结果保持不变: enter image description here

4 个答案:

答案 0 :(得分:1)

对我来说,解决方案是在progress.fractionCompleted周围添加Float,所以像这样使用它:

.uploadProgress{ progress in
    self.updateProgressBar(imagesToDo: images.count, prog: Float(progress.fractionCompleted))
}
谢谢: https://github.com/Alamofire/Alamofire/issues/1652#issuecomment-259020449

答案 1 :(得分:0)

我希望在更新您的Alamofire pod时解决此问题。

这里提到这个问题: - https://github.com/SwiftyJSON/Alamofire-SwiftyJSON/issues/40

答案 2 :(得分:0)

有同样的问题,请使用以下代码修复:

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

注意.progress()添加的括号,通过使用Xcode生成代码存根来找到它。似乎文档中有错误,如果你能证实我们应该在GitHub上提出问题;)

答案 3 :(得分:0)

这个问题也困扰着我。这是由NSURLRequest.progress和Alamofire.Request.progress的模糊​​问题引起的。

为解决这个问题,我修改了Alamofire的来源。

打开Alamofire / Request.swift(v3.4.x)

在第141行,将函数重命名为无进展的函数,我选择了requestProgress。

来自:

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

要:

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

继续像以前一样使用该函数,没有编译器问题。