You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 03:12:44