Кодировать URL в Swift 5 - PullRequest
       2

Кодировать URL в Swift 5

0 голосов
/ 23 марта 2020

Какой самый краткий способ кодировать URL в Swift?

У меня есть

let request_url = URL(string:"http://api.openweathermap.org/data/2.5/weather?appid=dca0aa44807a0bc05ed51c6a85472341&q="+"New York")

Как добавить + вместо пробела между Нью-Йорком и каким-либо простым способом, доступным в скор

1 Ответ

0 голосов
/ 23 марта 2020

Если я вас правильно понимаю, вы хотите кодировать пробелы как + и правильно кодировать другие специальные символы. Таким образом, этот подход использует встроенную функцию 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")
...