Инициализатор URL(string:)
не заботится о кодировании String
в качестве действительного URL String
, он предполагает, что String
уже закодирован и содержит только те символы, которые действительны в URL
,Следовательно, вы должны выполнить кодировку, если ваш String
содержит недопустимые символы URL.Вы можете добиться этого, позвонив по номеру String.addingPercentEncoding(withAllowedCharacters:)
.
let unencodedUrlString = "áűáeqw"
guard let encodedUrlString = unencodedUrlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), let url = URL(string: encodedUrlString) else { return }
. Вы можете изменить CharacterSet
в зависимости от того, какая часть вашего URL содержит символы, которые необходимо кодировать. Я просто использовал urlQueryAllowed
для презентаций.