Гиперссылка с%@ не работает на 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"])