Respostas:
Este não é exatamente o terceiro nível, veja bem. Um URL é dividido assim:
http)://delimitadorusername:password@hostname)digg.com):80após o nome de domínio, por exemplo)/news/business/24hr)?foo=bar&baz=frob)#foobar).Um URL "completo" seria assim:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURLtem uma ampla gama de acessores. Você pode verificá-los na documentação da NSURLclasse, 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] = bazO 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.)
file.htmlnão está listado nos marcadores - vejo que estamos pulando do caminho para a string de consulta ...
[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//