Получить части NSURL в objective-c


у меня есть NSString со значением

http://digg.com/news/business/24hr

Как я могу получить все до 3-го уровня?

http://digg.com/news/
2 108

2 ответа:

это не совсем третий уровень, заметь. URL-адрес разделяется следующим образом:

  • протокол или схему (здесь http)
  • the :// разделитель
  • имя пользователя и пароль (здесь нет, но это может быть username:password@hostname)
  • имя хоста (здесь digg.com)
  • порт (это было бы :80 после доменного имени например)
  • путь (здесь /news/business/24hr)
  • в строка параметров (все, что следует за точкой с запятой)
  • строка запроса (это было бы, если бы вы получили такие параметры, как ?foo=bar&baz=frob)
  • фрагмент (это было бы, если бы у вас был якорь в ссылке, например #foobar).

"полнофункциональный" URL-адрес будет выглядеть так:

http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz

NSURL имеет широкий диапазон методов доступа. Вы можете проверить их в документации для NSURL класс, раздел доступ к Части URL. Для быстрого ознакомления:

  • -[NSURL scheme] = http
  • -[NSURL resourceSpecifier] = (все от / / до конца URL)
  • -[NSURL user] = foobar
  • -[NSURL password] = более, общаться
  • -[NSURL host] = example.com
  • -[NSURL port] = 8080
  • -[NSURL path] = / some / path / file.HTML-код
  • -[NSURL pathComponents] = @["/", "некоторые", "путь", "файл.html"] (обратите внимание, что начальная / является частью это)
  • -[NSURL lastPathComponent] = файл.HTML-код
  • -[NSURL pathExtension] = html
  • -[NSURL parameterString] = params-здесь
  • -[NSURL query] = foo=bar
  • -[NSURL fragment] = Базом

что вы хотите, хотя, что-то вроде этого:

NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
    @"%@://%@/%@",
    url.scheme,
    url.host,
    url.pathComponents[1]];

для вашего примера URL, то, что вы, кажется, хотите, это протокол, хост и первый компонент пути. (Элемент с индексом 0 в массиве, возвращенном -[NSString pathComponents] это просто "/", так что вы хотите элемент с индексом 1. Другие черты отбрасываются.)

Using Playground , language swift, I got this ! Площадка обеспечивает интерактивный способ увидеть это в действии. Я надеюсь, что вы можете наслаждаться делать то же самое, интересный способ узнать NSURL важную тему в iOS.