Tôi đang cố gắng thực hiện yêu cầu POST trong bản chụp phát triển Swift 3 nhưng vì một số lý do, lệnh gọi tới NSURLSession. dataTask không thành công với các lỗi trong Tiêu đềYêu cầu POST trong ảnh chụp nhanh của Swift 3 cho phép "tham chiếu mơ hồ đến thành viên 'dataTask (với: completionHandler :)'
đây là mã tôi đang sử dụng:.
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ỗi này là chính xác:
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
bất cứ ai có thể cho tôi biết:
- Tại sao nó đem lại cho tôi lỗi này
- Làm thế nào để thực hiện thành công một yêu cầu POST với các thông số tùy chỉnh trong ảnh chụp phát triển Swift mới nhất sử dụng Foundation chỉ (Tôi không thể sử dụng thư viện của bên thứ ba khác trong mọi trường hợp)
Cảm ơn!
Chỉnh sửa: Tôi lưu ý rằng ai đó đã viết một bản sao của câu hỏi này sau câu hỏi của tôi. Câu trả lời ở đây là câu trả lời hay hơn.
Điều này thật kỳ quặc, tôi không thể thấy tại sao truyền 'NSMutableURLRequest' là mơ hồ. Nó không phải là một phân lớp của 'NSURL', vì vậy IDK làm thế nào nó sẽ nghĩ rằng nó có thể đi vào đó. – Alexander
Đây là những gì tôi đã suy nghĩ. Nó có thể là trường hợp đó là một lỗi, vì nó là ảnh chụp phát triển. –
Bạn có thể cố gắng phân biệt cuộc gọi này bằng cách gán 'dataTaskWithRequest: completionHandler:' vào một biến với chú thích kiểu chỉ định nó là '(NSURL, (NSData ?, NSURLResponse ?, NSError?) -> Swift.Void) -> NSURLSessionDataTask' và sau đó gọi là đóng cửa – Alexander