Добавить раздел в URL-адрес в swift

#ios #swift #url

#iOS #swift #url

Вопрос:

URL-адрес может иметь #sectionName компонент, который ведет к той части сайта, где начинается этот раздел.

В Swift я пытаюсь добавить этот компонент, но он не работает. Я пытаюсь:

 let url = URL(string: "example.com/component1")!
  

Позже я пытаюсь сделать:

 url.appendingPathComponent("#sectionName")
  

но он возвращает example.com/component1#sectionName вместо example.com/component1#sectionName .

На момент создания URL-адреса у меня все еще нет названия раздела, поэтому я не могу сделать URL(string: "example.com/component1#sectionName")

Я также пытался избежать # с # помощью или \# , но это не работает. Есть идеи, как добавить компонент, который является разделом?

Комментарии:

1. Fragment identifier нет, поэтому здесь path component его использовать неправильно .appendingPathComponent() . Вы должны начать с URLComponents

Ответ №1:

Ваш #sectionName компонент не является компонентом пути, и вы не можете его использовать appendingPathComponent .

Возможно, вам потребуется использовать URLComponent и добавлять fragment :

 var urlCompo = URLComponents(string: "example.com/component1")!
urlCompo.fragment = "sectionName"
let url = urlCompo.url!
print(url) //->example.com/component1#sectionName
  

Ответ №2:

При создании URL-адресов я рекомендую вам использовать (NS) URLComponents вместо ручного.

 var components = URLComponents()
components.scheme = "https"
components.host = "example.com"
components.path = "/component1"
components.fragment = "sectionName"

let url = components.url
  

Комментарии:

1. @regina_fallangi мой путь был неправильным (для него нужна начальная косая черта). Я исправил это и протестировал сам, и теперь это работает.