Câu trả lời:
Đây không phải là cấp độ thứ ba, phiền bạn. URL được chia theo cách đó:
http)://delimiterusername:password@hostname)digg.com):80ví dụ: đó sẽ là sau tên miền)/news/business/24hr)?foo=bar&baz=frob)#foobar).URL "đầy đủ tính năng" sẽ giống như sau:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURLcó nhiều loại người truy cập. Bạn có thể kiểm tra chúng trong tài liệu dành cho NSURLlớp, phần Truy cập các phần của URL . Để tham khảo nhanh:
-[NSURL scheme] = http-[NSURL resourceSpecifier] = (mọi thứ từ // đến cuối 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"] (lưu ý rằng tên viết tắt / là một phần của nó)-[NSURL lastPathComponent] = file.html-[NSURL pathExtension] = html-[NSURL parameterString] = params-here-[NSURL query] = foo = thanh-[NSURL fragment] = bazTuy nhiên, những gì bạn muốn là một cái gì đó như thế:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
Đối với URL mẫu của bạn, những gì bạn có vẻ muốn là giao thức, máy chủ lưu trữ và thành phần đường dẫn đầu tiên. (Phần tử ở chỉ mục 0 trong mảng được trả về -[NSString pathComponents]đơn giản là "/", vì vậy bạn sẽ muốn phần tử ở chỉ mục 1. Các dấu gạch chéo khác bị loại bỏ.)
file.htmlkhông được liệt kê trong các dấu đầu dòng - tôi thấy chúng ta đang nhảy từ đường dẫn đến chuỗi truy vấn ...
[url.pathComponents objectAtIndex:1]thay vì chỉ số0, bởi vì các dấu gạch chéo là thực sự yếu tố của mảng, gây ra các mã trong câu trả lời này đến đầu rahttp://digg.com//