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

时间:2016-10-30 05:13:33

标签: swift swift3 alamofire xcode8

更新的Alamofire 4.0.0没有提到如何放置Httpmethod&使用multipartFormData上传的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( _):

        }
    }
)

3 个答案:

答案 0 :(得分:16)

Alamofire.upload(multipartFormData:to:encodingCompletion:)URLConvertible参数采用to:。相反,您应该使用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
        }
    }
)

答案 1 :(得分:0)

对我来说,构建错误是由multipartFormData.appendBodyData()引起的。用multipartFormData.append()替换后,问题就解决了。

答案 2 :(得分:0)

我得到了同样的错误,花了很多时间后,我发现问题是:

我正在传递MutableURLRequest而不是传递URLRequest个对象。这就是为什么我得到这个错误。在将其输入URLRequest后,它就会开始工作。