Это не совсем третий уровень, заметьте. URL разделен следующим образом:
- протокол или схема (здесь
http
)
- разделитель
://
- имя пользователя и пароль (здесь их нет, но это может быть
username:password@hostname
)
- имя хоста (здесь
digg.com
)
- порт (например,
:80
после имени домена)
- Путь (здесь
/news/business/24hr
)
- строка параметра (все, что следует после точки с запятой)
- строка запроса (это было бы, если бы у вас были параметры GET типа
?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]
= @ ["/", "some", "path", "file.html"] (обратите внимание, что начальный / является его частью)
-[NSURL lastPathComponent]
= file.html
-[NSURL pathExtension]
= html
-[NSURL parameterString]
= params-here
-[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. Другие слэши отбрасываются.)