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( _):
}
}
)
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
}
}
)
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.
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.