我正在将一个项目从Swift 1.2更新到2.0,我在使用Alamofire.download时遇到了一些麻烦。
最初我打电话给self.request = Alamofire.download(.GET, self.arquivo!.url, { _ in arquivoPath }).response({ (_, _, _, _) -> Void in
我在Swift 2上得到“没有更多上下文的表达类型是模糊的。”
如果我将其更改为self.request = Alamofire.download(Method.GET, self.arquivo!.url, { _ in arquivoPath })
我得到“无法使用类型'的参数列表调用'下载'(方法,字符串,(_) - > NSURL)'”
我无法使用任何类型的组合。
答案 0 :(得分:0)
download
闭包有两个参数:
Alamofire.download(.GET, url) { (temporaryURL, response) -> NSURL in
let fileManager = NSFileManager.defaultManager()
let directoryURL = try! fileManager.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
let pathComponent = response.suggestedFilename
return directoryURL.URLByAppendingPathComponent(pathComponent!)
}
您只有一个闭包,其中定义了应保存下载文件的位置的文件URL。
如果您想检测/处理错误,请添加response
电话:
Alamofire.download(.GET, url) { (temporaryURL, response) -> NSURL in
let fileManager = NSFileManager.defaultManager()
let directoryURL = try! fileManager.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: false)
let pathComponent = response.suggestedFilename
return directoryURL.URLByAppendingPathComponent(pathComponent!)
}.response { _, response, _, error in
if let error = error {
print("failed with error: \(error)")
} else if let statusCode = response?.statusCode where statusCode != 200 {
print("unsuccessful with statusCode: \(statusCode)")
} else {
print("download succeeded")
}
}
显然,构建应该以任何方式保存文件的URL,但这说明了这个想法。