gpt4 book ai didi

ios - URLSession 和 JSONSerialization Swift 3

转载 作者:行者123 更新时间:2023-11-29 11:51:58 24 4
gpt4 key购买 nike

在您阅读本文之前,请理解我是 Swift 的初学者并且正在努力学习。我浏览了一些网站,希望得到答案,但我要么找不到,要么做错了。我一直在关注本教程,但这是旧的,没有更新 >> Tutorial I followed <<

我还尝试将一些修改为 swift 3 - 尽管我可能没有做对。

我该如何准确地正确执行 URLSession?我收到此错误:

invalid conversion from throwing function of type'(_, _, _) throws -> Void' to non-throwing function type

对于下面这一行:

let task : URLSessionDataTask = session.dataTask(with: request, completionHandler: {data, response, error -> Void in

对于变量“jsonDict”——我得到了我遇到的错误

extra arg 'error' in call.

提前致谢

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()
}

最佳答案

请查找 Swift 3.0 的更新代码

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: .urlFragmentAllowed)!

let url : URL = URL(string: urlString)!
let request: URLRequest = URLRequest(url:url)
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)

let task = session.dataTask(with: request) { (data, response, error) in

if(error != nil){
print(error?.localizedDescription ?? "")
}
else{
do{
let jsonDict:NSDictionary = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! NSDictionary
let quotes:NSArray = ((jsonDict.object(forKey: "query") as! NSDictionary).object(forKey: "results") as! NSDictionary).object(forKey: "quote") as! NSArray
print(quotes)

}
catch{
print(error.localizedDescription)
}
}
};
task.resume()

注意:我还没有测试代码。因为你没有指定 URL 的参数

关于ios - URLSession 和 JSONSerialization Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40732278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com