当文本字段包含两个子字符串时,打开天气地图可以识别城市名称

问题描述 投票:0回答:3

如果城市名称为“La Paz”,Open Weather Map 将不会返回 JSON 数据,但如果用户输入带有一个子字符串的城市(例如:里士满。

let urlString = "\(weatherURL)&q=\(cityName)"

我该如何解决这个问题?预先感谢您的帮助。

swift openweathermap
3个回答
0
投票

虽然您的问题并不完全清楚,但我认为问题与文本字段中的间距有关。您可以使用函数 addingPercentEncoding(withAllowedCharacters:) 来尝试。这将使字符串的 URL 更加安全。

否则,我建议检查天气图文档,看看它是否需要不同的数据。


0
投票

URL 不得包含空格字符。

要将空格字符替换为

%20
,您必须对 URL 进行编码

let weatherBase = "https://api.openweathermap.org/data/2.5/weather"
let weatherAPIKey = "••••••••••••••••••"
let city = "La Paz"

var urlComponents = URLComponents(string: weatherBase)!
let queryItems = [URLQueryItem(name: "q", value: city),
                  URLQueryItem(name: "appid", value: weatherAPIKey)]
urlComponents.queryItems = queryItems
if let weatherURL = urlComponents.url { ...

由于您要包含 API 密钥,甚至可能包含

units
参数
URLComponents/URLQueryItem
是一个合理的解决方案。


0
投票

我遇到了同样的问题,我可以使用以下代码解决它: city = city.split(' ').join('+');

© www.soinside.com 2019 - 2024. All rights reserved.