Если я вас правильно понимаю, вы хотите кодировать пробелы как +
и правильно кодировать другие специальные символы. Таким образом, этот подход использует встроенную функцию addingPercentEncoding(withAllowedCharacters:)
, которая переводит пробелы в %20
. После этого мы заменяем все вхождения %20
на +
.
extension URL {
init?(encoding string: String) {
let encodedString = string
.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
.replacingOccurrences(of: "%20", with: "+")
guard let encodedString != nil else { return nil }
self.init(string: encodedString!)
}
}
. Он инкапсулирован в функцию URL
init, поэтому вы можете использовать ее следующим образом:
let requestUrl = URL(encoding: "http://api.openweathermap.org/data/2.5/weather?appid=dca0aa44807a0bc05ed51c6a85472341&q="+"New York")