Este não é exatamente o terceiro nível, veja bem. Um URL é dividido assim:
- o protocolo ou esquema (aqui,
http
)
- o
://
delimitador
- o nome de usuário e a senha (aqui não há, mas pode ser
username:password@hostname
)
- o nome do host (aqui,
digg.com
)
- a porta (que seria
:80
após o nome de domínio, por exemplo)
- o caminho (aqui,
/news/business/24hr
)
- a string de parâmetro (qualquer coisa que siga um ponto-e-vírgula)
- a string de consulta (isso seria se você tivesse parâmetros GET como
?foo=bar&baz=frob
)
- o fragmento (isso seria se você tivesse uma âncora no link, como
#foobar
).
Um URL "completo" seria assim:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
tem uma ampla gama de acessores. Você pode verificá-los na documentação da NSURL
classe, seção Acessando as partes da URL . Para referência rápida:
-[NSURL scheme]
= http
-[NSURL resourceSpecifier]
= (tudo de // até o final do URL)
-[NSURL user]
= foobar
-[NSURL password]
= nicate
-[NSURL host]
= exemplo.com
-[NSURL port]
= 8080
-[NSURL path]
= /some/path/file.html
-[NSURL pathComponents]
= @ ["/", "algum", "caminho", "arquivo.html"] (observe que a inicial / é parte dela)
-[NSURL lastPathComponent]
= file.html
-[NSURL pathExtension]
= html
-[NSURL parameterString]
= params-aqui
-[NSURL query]
= foo = bar
-[NSURL fragment]
= baz
O que você vai querer, porém, é algo assim:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Para o seu URL de exemplo, o que você parece querer é o protocolo, o host e o primeiro componente do caminho. (O elemento no índice 0 na matriz retornada por -[NSString pathComponents]
é simplesmente "/", então você vai querer o elemento no índice 1. As outras barras são descartadas.)
[url.pathComponents objectAtIndex:1]
vez de índice0
, porque as barras são na verdade elementos da matriz, fazendo com que o código nesta resposta seja geradohttp://digg.com//
file.html
não está listado nos marcadores - vejo que estamos pulando do caminho para a string de consulta ...O Playground oferece uma maneira interativa de ver isso em ação. Espero que você goste de fazer o mesmo, uma maneira divertida de aprender NSURL, um tópico importante no iOS.
fonte