我尝试使用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)
}
答案 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 {
继续像以前一样使用该函数,没有编译器问题。