我正在将我的代码转换为 swift 3,但在以下代码中出现“没有更多上下文的情况下表达式类型不明确”错误。
open class func performGetRequest(_ targetURL: URL!, completion: @escaping (_ data: Data?, _ HTTPStatusCode: Int, _ error: NSError?) -> Void) {
var request = URLRequest(url: targetURL)
request.httpMethod = "GET"
let sessionConfiguration = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfiguration)
let task = session.dataTask(with: request) { (data, response, error) in
DispatchQueue.main.async(execute: {
completion(data, response.statusCode,error)
})
}
task.resume()
}
最佳答案
编译器需要Error
而不是NSError
。
进一步在 Swift 3 中省略了完成处理程序中的参数标签,如果您实际上是指非可选参数,则不要传递 IUO* 参数:
open class func performGetRequest(_ targetURL: URL, completion: @escaping (Data?, Int, Error?) -> Void) {
最后,在这种情况下你不需要 URLRequest
,GET 是默认的,所以只需将 URL 传递给 dataTask
并删除与请求相关的两行.
(*) 隐式解包可选
关于swift - dataTask 中没有更多上下文,表达式类型不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43207603/