Este no es exactamente el tercer nivel, eso sí. Una URL se divide de esa manera:
- el protocolo o esquema (aquí,
http)
- el
://delimitador
- el nombre de usuario y la contraseña (aquí no hay ninguno, pero podría ser
username:password@hostname)
- el nombre de host (aquí,
digg.com)
- el puerto (que sería
:80 después del nombre de dominio, por ejemplo)
- el camino (aquí,
/news/business/24hr)
- la cadena de parámetros (cualquier cosa que siga a un punto y coma)
- la cadena de consulta (eso sería si tuviera parámetros GET como
?foo=bar&baz=frob)
- el fragmento (eso sería si tuvieras un ancla en el enlace, como
#foobar).
Una URL "con todas las funciones" se vería así:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURLtiene una amplia gama de accesos. Puede consultarlos en la documentación de la NSURLclase, 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] = baz
Sin 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).
[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//file.htmlno aparece en las viñetas; veo que estamos saltando de la ruta a la cadena de consulta ...fuente