Гиперссылка с%@ не работает на iOS

Поэтому у меня есть следующая ссылка в моем файле Localizable.strings:

someURL = "https://www.thisisthelink.be/api/article?categoryId=%@&key=ehhssd%bfbfs43-53456Gdffd~563&lang=nl&amount=1000&mobile=true";

Часть, где есть%@, мне нужно заполнить идентификатор из этой категории (например, 27). Так далее в моем коде я делаю следующее

   let URL = String(format: "someURL".localized,String(id))

Но это дает сбой, и я действительно не знаю, почему (сбой - это просто поток 1: EXC_BREAKPOINT(code=1,...), поэтому я не могу понять, что именно не так).

.Localized является следующим расширением

extension String {
    var localized: String {
        return NSLocalizedString(self, comment: "")
    }
}

2 ответа

Я полагаю, что нет никаких проблем со специальными символами, но вы можете попробовать сделать следующее:

let specialChars = "%@"
someURL = "https://www.thisisthelink.be/api/article?categoryId=\(specialChars)&key=ehhssdbfbfs4353456Gdffd4563&lang=nl&amount=1000&mobile=true"
let uRL = String(format: NSLocalizedString(someURL, comment: "someURL"), String(id))

Я не люблю локализовать URL-адреса, потому что они могут иметь непредсказуемые композиции, лучший способ - локализовать только текст, чтобы точно избежать проблем с форматированием.

PS: Обычно использование заглавных букв в имени свойств считается плохим отношением, вместо URL следует использовать uRLstr или uRL

Я не понимаю, почему вы хотите такой запрос. По-моему, вместо этого я использую базовый URL+ имя интерфейса + params. Как и при использовании AFNetworking, params должен быть словарем, который легко генерировать.

В любом случае, если вам нужен URL, похожий на длинную строку, в Swift вам лучше использовать "categoryId=\(id)", чтобы загрузить другой идентификатор, который вы хотите.

И, наконец, если вы настаиваете на этом:

String(format: someURL, arguments: ["123"])

Другие вопросы по тегам