Инициализатор URL(string:)
возвращает необязательный , поскольку синтаксический анализ строки может завершиться неудачно. В этом случае nil
возвращается. Это именно то, что происходит здесь, поскольку указанная вами строка не является допустимым URL-адресом: в запросе есть несколько символов, которые не разрешены и должны быть заменены: {
как %7B
, "
как %22
, пробел как %20
и }
как %7D
.
Итак, инициализатор возвращает nil
. Следующее, что вы делаете, это принудительное развертывание с помощью оператора !
. Но принудительное развертывание nil
является незаконным, и поэтому вы терпите крах.
Если вы хотите создать URL-адрес, обратитесь к классу URLComponents , который выполняет все необходимые экранирования, так что вам не нужно об этом заботиться. Свойство queryItems
представляет особый интерес для вас, это массив URLQueryItem .