POST-Anfrage im Swift-3 dev-snapshot gibt "Mehrdeutiger Verweis auf member 'dataTask(mit:completionHandler:)'
Ich versuche, eine POST-Anfrage im Swift 3 Entwicklung Momentaufnahme, aber aus irgendeinem Grund, den Anruf zu NSURLSession.dataTask schlägt mit der Fehlermeldung im Titel.
Hier ist der code, den ich verwende:
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()
Der Fehler ist genau:
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
Kann mir jemand sagen:
- Warum es gibt mir diese Fehlermeldung
- Wie erfolgreich eine POST-Anforderung mit benutzerdefinierten Parametern in der neuesten Rasche Entwicklung Momentaufnahme über Foundation nur (ich bin nicht in der Lage zu verwenden, andere Drittanbieter-Bibliotheken unter keinen Umständen)
Dank!
Edit: ich Bemerke, dass jemand schrieb, ein Duplikat dieser Frage nach mir. Hier ist die Antwort die bessere.
- Das ist seltsam, ich kann nicht sehen, warum die übergabe
NSMutableURLRequest
ist mehrdeutig. Es ist keine Unterklasse vonNSURL
, so IDK, wie Sie denken würden, es könnte dort zu gehen. - Dies ist, was ich dachte. Es kann sein, dass es ein bug ist, wie es ist, die Entwicklung Momentaufnahme.
- Sie können versuchen, um keine Verwechslungen dieser Aufruf durch die Zuordnung
dataTaskWithRequest:completionHandler:
um eine variable mit einem Typ-annotation angeben, es ist(NSURL, (NSData?, NSURLResponse?, NSError?) -> Swift.Void) -> NSURLSessionDataTask
und rufen dann die Schließung - Möglich, Duplikat der Swift 3 URLSession.shared() Mehrdeutige Referenz auf member 'dataTask(mit:completionHandler:) error (Fehler)
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden
URLRequest
struct.In Xcode8 funktionieren:
Darüber hinaus Grund dieses Fehlers ist URLSession-API hat die gleiche name-Methode, aber jeweils ein anderes argument .
So, API verwechselt werden ohne expliziten cast. Ich denke, das ist API ' s benennen Fehler.
aufgetreten ist dieses problem folgenden code:
Bitte beachten Sie, dass Xcode-release 8.0 URLSession.shared() wird die Eigenschaft und Methode nicht, so haben Sie zu nennen, wie URLSession.geteilt wird.dataTask(mit:);