Swift:如何将搜索框文本空格替换为+适配OpenWeather API
解决OpenWeatherMap API带空格城市名的查询问题
你只需要在拼接URL前对城市名字符串做简单处理,把空格替换成+(或者用更通用的URL编码方式),就能兼容带空格的城市名查询。
修改后的代码如下:
struct WeatherManager { let weatherURL = "https://api.openweathermap.org/data/2.5/weather?appid=XXXXXXXX&units=imperial" var delegate: WeatherManagerDelegate? func fetchWeather(cityName: String) { // 方案1:直接替换空格为+,满足API要求 let formattedCityName = cityName.replacingOccurrences(of: " ", with: "+") // 方案2:更通用的URL编码(推荐,支持处理所有URL非法字符) // let formattedCityName = cityName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? cityName let urlString = "\(weatherURL)&q=\(formattedCityName)" performRequest(with: urlString) } }
两种方案说明:
- 方案1:针对性处理空格替换,逻辑简单直接,完全匹配你提到的API要求,适合只需要处理空格的场景。
- 方案2:使用Swift内置的URL编码方法,会自动将所有URL不允许的字符(比如空格、中文、特殊符号等)转换为合法格式,能覆盖更多边缘情况,是更规范的做法,推荐长期使用。
修改后,无论输入的城市名是否包含空格,调用fetchWeather方法都能生成符合API要求的请求URL,正常查询天气数据。
内容的提问来源于stack exchange,提问作者Amit Tandel
相关产品推荐
相关产品推荐

