在Alamofire.upload swift 3中没有更多上下文的表达类型是模糊的

PPS*_*ein 8 swift alamofire swift3 xcode8

更新的Alamofire 4.0.0没有提到如何使用multipartFormData上传Httpmethod和Httpheaders.这就是我google并在stackoverflow问题中找到解决方案的原因.但问题是我做了同样的回答然后得到以下错误消息和构建失败.请帮我解决一下.

如果没有更多的上下文,表达的类型是不明确的

这是我的编码:

let URL = try! URLRequest(url: Config.imageUploadURL, method: .post, headers: headers)

Alamofire.upload(
    multipartFormData: { multipartFormData in
        multipartFormData.append(self.imageData, withName: "image", fileName: "file.png", mimeType: "image/png")
    },
    to: URL,
    encodingCompletion: { encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                if((response.result.value) != nil) {

                } else {

                }
            }
        case .failure( _):

        }
    }
)
Run Code Online (Sandbox Code Playgroud)

Jon*_*oks 16

Alamofire.upload(multipartFormData:to:encodingCompletion:)需要URLConvertibleto:参数.相反,你应该使用Alamofire.upload(multipartFormData:with:encodingCompletion:)哪个URLRequestConvertible为其with:参数.

我认为你的参数名称URL与该类型相同,URL()有助于创建奇怪的编译器错误.

以下编译对我来说:

let url = try! URLRequest(url: URL(string:"www.google.com")!, method: .post, headers: nil)

Alamofire.upload(
    multipartFormData: { multipartFormData in
        multipartFormData.append(Data(), withName: "image", fileName: "file.png", mimeType: "image/png")
    },
    with: url,
    encodingCompletion: { encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                if((response.result.value) != nil) {

                } else {

                }
            }
        case .failure( _):
            break
        }
    }
)
Run Code Online (Sandbox Code Playgroud)