您好,我有用于 swift2.2 的 json 解析代码,但是当我将它用于 Swift 3.0 时,出现了该错误
ViewController.swift:132:31: Ambiguous reference to member 'dataTask(with:completionHandler:)'
我的代码在这里
let listUrlString = "http://bla.com?batchSize=" + String(batchSize) + "&fromIndex=" + String(fromIndex)
let myUrl = URL(string: listUrlString);
let request = NSMutableURLRequest(url:myUrl!);
request.httpMethod = "GET";
let task = URLSession.shared().dataTask(with: request) {
data, response, error in
if error != nil {
print(error!.localizedDescription)
DispatchQueue.main.sync(execute: {
AWLoader.hide()
})
return
}
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSArray
if let parseJSON = json {
var items = self.categoryList
items.append(contentsOf: parseJSON as! [String])
if self.fromIndex < items.count {
self.categoryList = items
self.fromIndex = items.count
DispatchQueue.main.async(execute: {
self.categoriesTableView.reloadData()
AWLoader.hide()
})
}else if( self.fromIndex == items.count){
DispatchQueue.main.async(execute: {
AWLoader.hide()
})
}
}
} catch {
AWLoader.hide()
print(error)
}
}
task.resume()
感谢您的想法。
最佳答案
编译器被函数签名弄糊涂了。你可以这样修复它:
let task = URLSession.shared.dataTask(with: request as URLRequest) {
但是,请注意,我们不必在此签名中将“请求”转换为 URLRequest
,if 之前已将其声明为 URLRequest
而不是 NSMutableURLRequest
:
var request = URLRequest(url:myUrl!)
这是 NSMutableURLRequest
和失败的新 URLRequest
之间的自动转换,迫使我们在此处进行此转换。
关于ios - Swift 3 URLSession.shared() 对成员 'dataTask(with :completionHandler:) error (bug)) 的模糊引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37812286/