Risposte:
Questo non è esattamente il terzo livello, intendiamoci. Un URL è suddiviso in questo modo:
http)://delimitatoreusername:password@hostname)digg.com):80 ad esempio dopo il nome del dominio)/news/business/24hr)?foo=bar&baz=frob)#foobar).Un URL "con funzionalità complete" sarebbe simile al seguente:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURLha una vasta gamma di accessori. Puoi controllarli nella documentazione per la NSURLclasse, sezione Accesso alle parti dell'URL . Per una rapida consultazione:
-[NSURL scheme] = http-[NSURL resourceSpecifier] = (tutto da // alla fine dell'URL)-[NSURL user] = foobar-[NSURL password] = nicato-[NSURL host] = esempio.com-[NSURL port] = 8080-[NSURL path] = /some/path/file.html-[NSURL pathComponents] = @ ["/", "some", "path", "file.html"] (nota che l'iniziale / ne fa parte)-[NSURL lastPathComponent] = file.html-[NSURL pathExtension] = html-[NSURL parameterString] = params-qui-[NSURL query] = foo = bar-[NSURL fragment] = bazQuello che vorrai, però, è qualcosa del genere:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Per il tuo URL di esempio, ciò che sembri desiderare è il protocollo, l'host e il primo componente del percorso. (L'elemento all'indice 0 nell'array restituito da -[NSString pathComponents]è semplicemente "/", quindi ti consigliamo l'elemento all'indice 1. Le altre barre vengono scartate.)
file.htmlnon è elencato nei punti elenco: vedo che stiamo saltando dal percorso alla stringa di query ...
[url.pathComponents objectAtIndex:1]invece di index0, perché le barre sono in realtà elementi dell'array, causando l'output del codice in questa rispostahttp://digg.com//