Dies ist nicht gerade die dritte Ebene, wohlgemerkt. Eine URL wird folgendermaßen aufgeteilt:
- das Protokoll oder Schema (hier
http
)
- das
://
Trennzeichen
- den Benutzernamen und das Passwort (hier gibt es keine, aber es könnte sein
username:password@hostname
)
- der Hostname (hier
digg.com
)
- der Port (das wäre zum Beispiel
:80
nach dem Domainnamen)
- der Weg (hier
/news/business/24hr
)
- die Parameterzeichenfolge (alles, was einem Semikolon folgt)
- die Abfragezeichenfolge (das wäre, wenn Sie GET-Parameter wie hätten
?foo=bar&baz=frob
)
- das Fragment (das wäre, wenn Sie einen Anker in der Verbindung, wie gehabt
#foobar
).
Eine "voll funktionsfähige" URL würde folgendermaßen aussehen:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
hat eine breite Palette von Accessoren. Sie können sie in der Dokumentation für die NSURL
Klasse im Abschnitt Zugriff auf die Teile der URL überprüfen . Zum schnellen Nachschlagen:
-[NSURL scheme]
= http
-[NSURL resourceSpecifier]
= (alles von // bis zum Ende der URL)
-[NSURL user]
= foobar
-[NSURL password]
= nicate
-[NSURL host]
= example.com
-[NSURL port]
= 8080
-[NSURL path]
= /some/path/file.html
-[NSURL pathComponents]
= @ ["/", "some", "path", "file.html"] (beachte, dass das initiale / ein Teil davon ist)
-[NSURL lastPathComponent]
= file.html
-[NSURL pathExtension]
= html
-[NSURL parameterString]
= params-hier
-[NSURL query]
= foo = bar
-[NSURL fragment]
= baz
Was Sie jedoch wollen, ist so etwas:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Für Ihre Beispiel-URL scheinen Sie das Protokoll, den Host und die erste Pfadkomponente zu wollen. (Das Element am Index 0 in dem von zurückgegebenen Array -[NSString pathComponents]
ist einfach "/", daher möchten Sie das Element am Index 1. Die anderen Schrägstriche werden verworfen.)
[url.pathComponents objectAtIndex:1]
anstelle von Index erhalten0
, da die Schrägstriche tatsächlich Elemente des Arrays sind, wodurch der Code in dieser Antwort ausgegeben wirdhttp://digg.com//
file.html
ist nicht in den Aufzählungspunkten aufgeführt - ich sehe, wir springen vom Pfad zur Abfragezeichenfolge ...Der Spielplatz bietet eine interaktive Möglichkeit, dies in Aktion zu sehen. Ich hoffe, Sie können das Gleiche tun, eine unterhaltsame Möglichkeit, NSURL zu lernen, ein wichtiges Thema in iOS.
quelle