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:

  1. Pourquoi il me fait cette erreur
  2. 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 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 fermeture
Double Possible de Swift 3 URLSession.partagé() référence Ambiguë à un membre " dataTask(avec:completionHandler:) erreur (bug)

OriginalL'auteur Chuppa Chump | 2016-05-30