Requête POST en Swift 3 dev instantané donne la référence ambiguë "à membre 'dataTask(avec:completionHandler:)'
Je suis en train de faire une requête POST dans la Swift 3 développement instantané, mais pour une raison quelconque, l'appel à NSURLSession.dataTask échoue avec l'erreur dans le Titre.
Ici c'est le code que j'utilise:
import Foundation
var err: NSError?
var params: Dictionary<String, String>
var url: String = "http://notreal.com"
var request = NSMutableURLRequest(url: NSURL(string: url)!)
var session = NSURLSession.shared()
request.httpMethod = "POST"
request.httpBody = try NSJSONSerialization.data(withJSONObject: params, options: [])
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var task = session.dataTask(with: request, completionHandler: {data, response, err -> Void in
print("Entered the completionHandler")
})
task.resume()
L'erreur est exactement:
testy.swift:19:12: error: ambiguous reference to member 'dataTask(with:completionHandler:)'
var task = session.dataTask(with: request, completionHandler: {data, response, err -> Void in
^~~~~~~
Foundation.NSURLSession:2:17: note: found this candidate
public func dataTask(with request: NSURLRequest, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Swift.Void) -> NSURLSessionDataTask
^
Foundation.NSURLSession:3:17: note: found this candidate
public func dataTask(with url: NSURL, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Swift.Void) -> NSURLSessionDataTask
Quelqu'un peut me dire:
- Pourquoi il me fait cette erreur
- Comment réussir à faire une requête POST avec des paramètres personnalisés dans le dernier développement rapide instantané à l'aide de la Fondation uniquement (je suis incapable d'utiliser d'autres bibliothèques tierces en toutes circonstances)
Merci!
Edit: je remarque que quelqu'un a écrit un duplicata de cette question subséquente à la mienne. La réponse ici est la meilleure.
C'est étrange, je ne vois pas pourquoi en passant
C'est ce que je pensais. Il peut être le cas que c'est un bug, comme c'est le développement de l'instantané.
Vous pouvez essayer de lever l'ambiguïté de cet appel par l'affectation de
Double Possible de Swift 3 URLSession.partagé() référence Ambiguë à un membre " dataTask(avec:completionHandler:) erreur (bug)
NSMutableURLRequest
est ambigu. Ce n'est pas une sous-classe de NSURL
, donc IDK comment il pense qu'il pourrait y aller.C'est ce que je pensais. Il peut être le cas que c'est un bug, comme c'est le développement de l'instantané.
Vous pouvez essayer de lever l'ambiguïté de cet appel par l'affectation de
dataTaskWithRequest:completionHandler:
à une variable avec un type d'annotation spécifiant c'est (NSURL, (NSData?, NSURLResponse?, NSError?) -> Swift.Void) -> NSURLSessionDataTask
et puis en appelant cette fermetureDouble Possible de Swift 3 URLSession.partagé() référence Ambiguë à un membre " dataTask(avec:completionHandler:) erreur (bug)
OriginalL'auteur Chuppa Chump | 2016-05-30
Vous devez vous connecter pour publier un commentaire.
utilisation
URLRequest
struct.Dans Xcode8 sera beau travail:
En outre, la raison de cette erreur est URLSession API a même nom de méthode, mais chacun prend un argument différent .
Donc, l'API seront confus, sans cast explicite. Je pense que c'est l'API de nommage erreur.
eu ce problème, le code suivant:
OriginalL'auteur quesera2
Veuillez noter qu'à partir de Xcode version 8.0 URLSession.partagé() devient propriété et non la méthode de sorte que vous devrez l'appeler comme URLSession.partagé.dataTask(avec:);
OriginalL'auteur Sergey Kuznetsov