Próbuję wykonać żądanie POST w migawce rozwoju Swift 3, ale z jakiegoś powodu wywołanie NSURLSession. dataTask nie powiedzie się z powodu błędu w tytuleŻądanie POST w Swift 3 dev snapshot daje "niejednoznaczne odwołanie do elementu" DataTask (z: completHandler :) '
Oto kod używam.
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()
błąd jest dokładnie:
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
Czy ktoś może mi powiedzieć:
- Dlaczego to daje mi ten błąd
- Jak skutecznie złożyć żądanie POST z parametrów niestandardowych w najnowszy snapshot rozwoju Swift wykorzystaniem Fundację tylko (nie jestem w stanie korzystać z innych bibliotek innych firm w żadnych okolicznościach)
Dzięki!
Edycja: Zauważam, że ktoś napisał duplikat tego pytania po moim. Odpowiedź jest lepsza.
To jest dziwne, nie widzę powodu, dla którego przekazanie 'NSMutableURLRequest' jest niejednoznaczne. To nie jest podklasa 'NSURL', więc IDK jak mogłoby się wydawać, że może tam wejść. – Alexander
Tak właśnie myślałem. Może się zdarzyć, że jest to błąd, ponieważ jest to migawka rozwoju. –
Możesz spróbować ujednoznacznić to połączenie, przypisując 'dataTaskWithRequest: completionHandler:' do zmiennej z adnotacją typu określającą jej '(NSURL, (NSData ?, NSURLResponse ?, NSError?) -> Swift.Void) -> NSURLSessionDataTask' i następnie wywołanie tego zamknięcia – Alexander