Відповіді:
Майте на увазі, це не зовсім третій рівень. URL поділено так:
http
)://
роздільник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]
= @ ["/", "деякий", "шлях", "file.html"] (зауважте, що початковий / є його частиною)-[NSURL lastPathComponent]
= file.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= парами-тут-[NSURL query]
= foo = бар-[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. Інші косої риски відкидаються.)
file.html
не вказано в пунктах кулі - я бачу, що ми стрибаємо зі шляху до рядка запиту ...
[url.pathComponents objectAtIndex:1]
замість індексу0
, оскільки косої риси - це фактично елементи масиву, що призводить до виведення коду в цій відповідіhttp://digg.com//