web-dev-qa-db-fra.com

Le type d'expression est ambigu sans plus de contexte dans Alamofire.upload Swift 3

La mise à jour d'Alamofire 4.0.0 ne mentionne pas comment mettre Httpmethod & Httpheaders en téléchargement avec multipartFormData. C'est pourquoi j'ai recherché une solution dans cette question de stackoverflow. Mais le problème est que j'ai fait la même chose que cette réponse, puis j'ai reçu le message d'erreur suivant et la construction a échoué. S'il vous plaît, aidez-moi à le résoudre.

Le type d'expression est ambigu sans plus de contexte

Voici mon codage:

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:) prend un URLConvertible pour l'argument to:. À la place, vous devez utiliser Alamofire.upload(multipartFormData:with:encodingCompletion:) qui prend un URLRequestConvertible pour son argument with:.

Je pense que votre nom d'argument URL qui est le même que le type URL() aide à créer d'étranges erreurs de compilation.

Ce qui suit compile pour moi:

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

Pour moi, l'erreur de build a été causée par une multipartFormData.appendBodyData(). Après l'avoir remplacé par multipartFormData.append() le problème a été résolu.

0
Florian Weßling

J'ai eu la même erreur, après avoir passé beaucoup de temps, j'ai trouvé que le problème était:

Je passais MutableURLRequest au lieu de passer URLRequest objet. C'est pourquoi j'obtenais cette erreur. Après l'avoir transtypé en URLRequest, il commence à fonctionner.

0
Mehul Thakkar