Alamofire:无法调用下载

时间:2015-10-31 14:41:54

标签: ios swift alamofire

我正在将一个项目从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)'”

我无法使用任何类型的组合。

1 个答案:

答案 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,但这说明了这个想法。