Respuestas:
Este no es exactamente el tercer nivel, eso sí. Una URL se divide de esa manera:
http
)://
delimitadorusername:password@hostname
)digg.com
):80
después del nombre de dominio, por ejemplo)/news/business/24hr
)?foo=bar&baz=frob
)#foobar
).Una URL "con todas las funciones" se vería así:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
tiene una amplia gama de accesos. Puede consultarlos en la documentación de la NSURL
clase, sección Acceso a las partes de la URL . Para referencia rápida:
-[NSURL scheme]
= http-[NSURL resourceSpecifier]
= (todo desde // hasta el final de la URL)-[NSURL user]
= foobar-[NSURL password]
= nicate-[NSURL host]
= ejemplo.com-[NSURL port]
= 8080-[NSURL path]
= /some/path/file.html-[NSURL pathComponents]
= @ ["/", "algunos", "ruta", "archivo.html"] (tenga en cuenta que la inicial / es parte de ella)-[NSURL lastPathComponent]
= archivo.html-[NSURL pathExtension]
= html-[NSURL parameterString]
= params-here-[NSURL query]
= foo = bar-[NSURL fragment]
= bazSin embargo, lo que querrás es algo así:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Para su URL de ejemplo, lo que parece querer es el protocolo, el host y el primer componente de ruta. (El elemento en el índice 0 en la matriz devuelta por -[NSString pathComponents]
es simplemente "/", por lo que querrá el elemento en el índice 1. Las otras barras se descartan).
file.html
no aparece en las viñetas; veo que estamos saltando de la ruta a la cadena de consulta ...
[url.pathComponents objectAtIndex:1]
lugar de índice0
, porque las barras diagonales son en realidad elementos de la matriz, lo que hace que el código de esta respuesta se muestrehttp://digg.com//