Pamiętaj, że to nie jest dokładnie trzeci poziom. Adres URL jest podzielony w następujący sposób:
- protokół lub schemat (tutaj
http
)
://
ogranicznik
- nazwa użytkownika i hasło (tutaj nie ma, ale może być
username:password@hostname
)
- nazwa hosta (tutaj
digg.com
)
- port (to byłoby
:80
na przykład po nazwie domeny)
- ścieżka (tutaj
/news/business/24hr
)
- ciąg parametrów (wszystko, co następuje po średniku)
- ciąg zapytania (tak by się stało, gdybyś miał parametry GET, takie jak
?foo=bar&baz=frob
)
- fragment (byłby to gdybyś miał zakotwiczenie w linku, na przykład
#foobar
).
„W pełni funkcjonalny” adres URL wyglądałby następująco:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
posiada szeroką gamę akcesoriów. Możesz je sprawdzić w dokumentacji NSURL
klasy, w sekcji Dostęp do części adresu URL . Szybkie odniesienie:
-[NSURL scheme]
= http
-[NSURL resourceSpecifier]
= (wszystko od // do końca adresu URL)
-[NSURL user]
= foobar
-[NSURL password]
= nicate
-[NSURL host]
= example.com
-[NSURL port]
= 8080
-[NSURL path]
= / część/ścieżka/plik.html
-[NSURL pathComponents]
= @ ["/", "trochę", "ścieżka", "plik.html"] (zwróć uwagę, że początkowy znak / jest jego częścią)
-[NSURL lastPathComponent]
= plik.html
-[NSURL pathExtension]
= html
-[NSURL parameterString]
= parametry tutaj
-[NSURL query]
= foo = bar
-[NSURL fragment]
= baz
Jednak to, czego będziesz chciał, to coś takiego:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
W przypadku Twojego przykładowego adresu URL wydaje się, że potrzebujesz protokołu, hosta i pierwszego składnika ścieżki. (Element pod indeksem 0 w tablicy zwrócony przez -[NSString pathComponents]
to po prostu „/”, więc będziesz potrzebować elementu o indeksie 1. Pozostałe ukośniki są odrzucane.)
[url.pathComponents objectAtIndex:1]
zamiast indeksu0
, ponieważ ukośniki są w rzeczywistości elementami tablicy, powodując, że kod w tej odpowiedzi na wyjściehttp://digg.com//
file.html
nie jest wymieniony w punktorach - widzę, że przeskakujemy ze ścieżki do ciągu zapytania ...Plac zabaw zapewnia interaktywny sposób zobaczenia tego w akcji. Mam nadzieję, że spodoba ci się robienie tego samego, przyjemnego sposobu nauki NSURL, ważnego tematu w iOS.
źródło