2010-09-11 3 views

Répondre

390

Ce n'est pas exactement le troisième niveau, pensez-y. Une URL est divisée comme cette façon:

  • le protocole ou le régime (ici, http)
  • délimiteur ://
  • le nom d'utilisateur et le mot de passe (ici il n'y en a pas, mais il pourrait être username:[email protected])
  • le nom d'hôte (ici, digg.com)
  • le port (qui serait :80 après le nom de domaine par exemple)
  • le chemin (ici, /news/business/24hr)
  • la chaîne de paramètres (tout ce qui suit un point-virgule)
  • la chaîne de requête (ce serait si vous aviez GET des paramètres tels que ?foo=bar&baz=frob)
  • le fragment (qui si vous aviez un point d'ancrage dans le lien , comme #foobar).

A "entièrement en vedette" URL ressemblerait à ceci:

http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz 

NSURL a une large gamme de accesseurs. Vous pouvez les vérifier dans la documentation de la classe NSURL, section Accès aux parties de l'URL. Pour une référence rapide:

  • -[NSURL scheme] = http
  • -[NSURL resourceSpecifier] = (tout de // à la fin de l'URL)
  • -[NSURL user] = foobar
  • -[NSURL password] = muniquer
  • -[NSURL host] = example.com
  • -[NSURL port] = 8080
  • -[NSURL path] =/some/pat h/file.html
  • -[NSURL pathComponents] = @ [ "/", "un peu", "chemin", "file.html"] (notez que la première partie/est de celui-ci)
  • -[NSURL lastPathComponent] = fichier.html
  • -[NSURL pathExtension] = html
  • -[NSURL parameterString] = params-ici
  • -[NSURL query] = foo = bar
  • -[NSURL fragment] = baz

Qu'est-ce que vous voulez, cependant, est quelque chose comme ça:

NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"]; 
NSString* reducedUrl = [NSString stringWithFormat: 
    @"%@://%@/%@", 
    url.scheme, 
    url.host, 
    url.pathComponents[1]]; 

Pour votre URL exemple, ce que vous semblez vouloir, c'est le protocole, l'hos t et le premier composant de chemin. (L'élément à l'index 0 dans le tableau retourné par -[NSString pathComponents] est tout simplement «/», de sorte que vous voulez que l'élément à l'index 1. Les autres barres obliques sont mis au rebut.)

+2

merci beaucoup – Melina

+0

génial répondre à l'homme, merci! –

+9

pour quiconque lit ceci: vous devez obtenir '[url.pathComponents objectAtIndex: 1]' au lieu de l'index '0', car les barres obliques sont en fait des éléments du tableau, ce qui provoque la sortie du code dans cette réponse' http: // digg.com // ' – Dima

3

Using Playground , language swift, I got this ! Playground offre un moyen interactif de voir ce en action. J'espère que vous pouvez profiter de faire de même, une façon amusante d'apprendre NSURL un sujet important dans iOS.