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
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]
= 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.html
no aparece en las viñetas; veo que estamos saltando de la ruta a la cadena de consulta ...Playground proporciona una forma interactiva de ver esto en acción. Espero que disfrutes haciendo lo mismo, una forma divertida de aprender NSURL, un tema importante en iOS.
fuente