Odpowiedzi:
Pamiętaj, że to nie jest dokładnie trzeci poziom. Adres URL jest podzielony w następujący sposób:
http)://ogranicznikusername:password@hostname)digg.com):80 na przykład po nazwie domeny)/news/business/24hr)?foo=bar&baz=frob)#foobar).„W pełni funkcjonalny” adres URL wyglądałby następująco:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURLposiada szeroką gamę akcesoriów. Możesz je sprawdzić w dokumentacji NSURLklasy, 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] = bazJednak 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.)
file.htmlnie jest wymieniony w punktorach - widzę, że przeskakujemy ze ścieżki do ciągu zapytania ...
[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//