При передаче корректной url строки по инициализатору URL(string: urlString) возвращает nil. Как исправить?

При передаче корректной url строки по инициализатору URL(string: urlString) возвращает nil. Как исправить? При вводе значения из одного слова (Например Moscow) все работает, когда вводится город из двух слов я разделяю запрос с помощью split(separator: " ") и соединяю с помощью .joined(separator: "%20") и получаю город разделенный %20 и все, сразу нил. Как то можно решить эту проблему?

строка юрл сформировани. Ключ скрыл по понятным причинам

получаем нил


Ответы (1 шт):

Автор решения: Eugene Krivenja

Где-то у вас там есть некорректный для URL символ.
Пользуйтесь для кодирования всех параметров правильной функцией во избежание подобных проблем.

let city = "New York".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
print("http://site.com?key=113&q=\(city)")
print(URL(string:"http://site.com?key=113&q=\(city)")!)

Output

http://site.com?key=113&q=New%20York
http://site.com?key=113&q=New%20York

→ Ссылка