web-dev-qa-db-ja.com

Alamofire.upload Swift 3にコンテキストがない場合、式のタイプはあいまいです

更新されたAlamofire 4.0.0では、multipartFormDataを使用してHttpmethodとHttpheadersをアップロードする方法については言及していません。だからこそ、私はその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( _):

        }
    }
)
8
PPShein

Alamofire.upload(multipartFormData:to:encodingCompletion:)は、_to:_引数にURLConvertibleを取ります。代わりに、with:_引数にURLRequestConvertibleを取るAlamofire.upload(multipartFormData:with:encodingCompletion:)を使用する必要があります。

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
        }
    }
)
_
16
Jon Brooks

私にとっては、ビルドエラーはmultipartFormData.appendBodyData()が原因でした。 multipartFormData.append()に置き換えた後、問題は解決しました。

0

私は同じエラーを受け取りました、多くの時間を費やした後、私はその問題があったことを見つけました:

MutableURLRequestオブジェクトを渡す代わりにURLRequestを渡していました。そのため、このエラーが発生していました。 URLRequestに型キャストすると、動作を開始します。

0
Mehul Thakkar