Ответы:
Заметьте, это не совсем третий уровень. 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] = nicate-[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-здесь-[NSURL query] = foo = бар-[NSURL fragment] = bazОднако вам нужно что-то вроде этого:
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//