又被老视频坑了
先列代码,再一点点分析
以下代码是别人的:在别的网站上找到的 www.jianshu.com/p/7cec65324…
let urlString:String = "http://www.weather.com.cn/data/sk/101010100.html"
var url:URL!
url = URL(string:urlString)
//发出请求
URLSession.shared.dataTask(with: url) { (objectData, response, error) in
guard error == nil else {
print("网络出错:\(error!.localizedDescription)")
return
}
guard objectData != nil else {
print("数据为空:")
return
}
do {
let jsonData = try JSONSerialization.jsonObject(with: objectData!, options: .mutableContainers)
print(jsonData)
} catch {
print("解析出错")
}
}.resume()
NO1:设置URL
//原码
let urlString:String = "http://www.weather.com.cn/data/sk/101010100.html"
var url:URL!
url = URL(string:urlString)
//改进 一步到位
let url = URL(string: "http://www.weather.com.cn/data/sk/101010100.html")!
NO2:极简版 JSON反序列化
这种方法使用try! 如果崩掉就很麻烦,推荐下面这种
let url = URL(string: "http://www.weather.com.cn/data/sk/101010100.html")!
URLSession.shared.dataTask(with: url) { data, _, _ in
let jsonData = try! JSONSerialization.jsonObject(with: data!, options: [])
print(jsonData)
}.resume()
let url = URL(string: "http://www.weather.com.cn/data/sk/101010100.html")!
URLSession.shared.dataTask(with: url) { data, _, _ in
do {
let jsonData = try JSONSerialization.jsonObject(with: data!, options: [])
print(jsonData)
} catch { // 如果反序列化失败,能够捕获到 json 失败的准确原因,而不会崩溃
print(error)
}
}.resume()