Ini bukan tingkat ketiga, ingatlah. Sebuah URL dibagi seperti itu:
- protokol atau skema (di sini,
http
)
- yang
://
pembatas
- nama pengguna dan kata sandi (di sini tidak ada, tapi bisa jadi
username:password@hostname
)
- nama host (di sini,
digg.com
)
- port (misalnya
:80
setelah nama domain)
- jalan (di sini,
/news/business/24hr
)
- string parameter (apa pun yang mengikuti titik koma)
- string kueri (itu akan menjadi jika Anda memiliki parameter GET seperti
?foo=bar&baz=frob
)
- fragmen (itu akan terjadi jika Anda memiliki jangkar di tautan, seperti
#foobar
).
URL "berfitur lengkap" akan terlihat seperti ini:
http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
memiliki berbagai macam pengakses. Anda dapat memeriksanya di dokumentasi untuk NSURL
kelas, bagian Mengakses Bagian dari URL . Untuk referensi cepat:
-[NSURL scheme]
= http
-[NSURL resourceSpecifier]
= (semuanya dari // sampai akhir 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"] (perhatikan bahwa inisial / adalah bagian darinya)
-[NSURL lastPathComponent]
= file.html
-[NSURL pathExtension]
= html
-[NSURL parameterString]
= params-here
-[NSURL query]
= foo = bar
-[NSURL fragment]
= baz
Namun, yang Anda inginkan adalah sesuatu seperti itu:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Untuk URL contoh Anda, yang tampaknya Anda inginkan adalah protokol, host, dan komponen jalur pertama. (Elemen di indeks 0 dalam larik yang dikembalikan oleh -[NSString pathComponents]
hanyalah "/", jadi Anda akan menginginkan elemen di indeks 1. Garis miring lainnya dibuang.)
[url.pathComponents objectAtIndex:1]
alih-alih indeks0
, karena garis miring sebenarnya adalah elemen dari array, menyebabkan kode dalam jawaban ini menjadi keluaranhttp://digg.com//
file.html
tidak terdaftar dalam poin-poin - saya melihat kita melompat dari jalur ke string kueri ...Playground menyediakan cara interaktif untuk melihat ini beraksi. Saya harap Anda dapat menikmati melakukan hal yang sama, cara yang menyenangkan untuk mempelajari NSURL, topik penting di iOS.
sumber