将链接从字符串转换为url时出现问题将链接从串转换为url时出现问题

  • 本文关键字:问题 url 链接 转换 字符串 swift
  • 更新时间 :
  • 英文 :


今天我遇到了一个问题,由于某种原因,url不想读取链接。我不知道如何解决这个问题。我在这里写的所有内容:由于某种原因,url = URL (string: "here")没有转换为链接。据我所知,我到处都有nil,因为我甚至不去let task = URLSession.shared.dataTask (with: url!),因为url没有从字符串转换为URL

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
// po searchBar.text
// print object

let urlString = "http://api.weatherstack.com/current?access_key=617ce097a4c8352ad4fa7b34e2570aa8&query=(searchBar.text!)"

let url = URL(string: urlString)

var locationName: String?
var temperature: Double?

let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject]

if let location = json["location"] {
locationName = location["name"] as? String
}

if let current = json["current"] {
temperature = current["temperature"] as? Double
}
}
catch let jsonError {
print(jsonError)
}
}
task.resume()
}

您永远不应该强制打开从来自用户输入的动态String创建的URL。您应该可选地绑定URL(string:)的返回值,并对搜索栏输入进行百分比编码,以确保URL字符串有效。

let urlString = "http://api.weatherstack.com/current?access_key=617ce097a4c8352ad4fa7b34e2570aa8&query=(searchBar.text!)"
guard let encodedUrlString = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), 
let url = URL(string: encodedUrlString) else { 
// You could display an error message to the user from here
return
}

与您的问题无关,但您不应该使用JSONSerialization来解码JSON响应。请改用Codable

最新更新