【发布时间】:2017-04-05 13:30:26
【问题描述】:
在您阅读本文之前,请理解我在某种程度上是 Swift 的初学者,并且正在努力学习。我浏览了一些网站希望得到答案,但我找不到或做错了。我一直在关注本教程,但这是旧的,没有更新>>Tutorial I followed
我也尝试将一些修改为 swift 3 - 虽然我可能做得不对。
我该如何正确地执行 URLSession?我收到此错误:
'(_, _, _) 类型的抛出函数的无效转换 throws -> void'到非抛出函数类型
对于下面这一行:
让任务:URLSessionDataTask = session.dataTask(with: request, completionHandler: {data, response, error -> Void in
对于变量“jsonDict” - 我收到错误
调用中有额外的 arg '错误'。
提前致谢
var urlString:String = ("http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol IN "+stringQuotes+"&format=json&env=http://datatables.org/alltables.env").addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!
var url : URL = URL(string: urlString)!
var request: URLRequest = URLRequest(url:url)
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)
let task : URLSessionDataTask = session.dataTask(with: request, completionHandler: {data, response, error -> Void in
if((error) != nil) {
println(error.localizedDescription)
}
else {
var err: NSError?
var jsonDict = try JSONSerialization.JSONObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers, error: &err) as NSDictionary
if(err != nil) {
println("JSON Error \(err!.localizedDescription)")
}
else {
var quotes:NSArray = ((jsonDict.objectForKey("query") as NSDictionary).objectForKey("results") as NSDictionary).objectForKey("quote") as NSArray
DispatchQueue.main.async(execute: {
.default.post(name: Notification.Name(rawValue: kNotificationStocksUpdated), object: nil, userInfo: [kNotificationStocksUpdated:quotes])
})
}
}
})
task.resume()
}
【问题讨论】:
-
它应该是
var jsonDict = try JSONSerialization.JSONObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as NSDictionary,在 swift 3 错误参数中删除 -
@Vinodh - 谢谢,我没想到会这么简单。
-
将其发布为对其他人有帮助的答案
-
尚未完全完成 - URLSessionDataTask 仍有问题
-
给点时间我会修复上面的代码并给你答案
标签: ios swift3 urlsession