2010-09-11 20 views

Trả lời

390

Đây không phải là cấp độ thứ ba, nhớ bạn. Một URL được chia như vậy:

  • giao thức hoặc chương trình (ở đây, http)
  • các :// delimiter
  • tên người dùng và mật khẩu (ở đây không có bất kỳ, nhưng nó có thể là username:[email protected])
  • tên máy chủ (ở đây, digg.com)
  • cảng (đó sẽ là :80 sau tên miền ví dụ)
  • con đường (ở đây, /news/business/24hr)
  • chuỗi tham số (bất cứ điều gì sau dấu chấm phẩy)
  • chuỗi truy vấn (mà có thể nếu bạn có tham số GET như ?foo=bar&baz=frob)
  • đoạn (mà có thể nếu bạn đã có một neo trong liên kết , như #foobar).

A "đầy đủ tính năng" URL sẽ trông như thế này:

http://foobar:[email protected]:8080/some/path/file.html;params-here?foo=bar#baz 

NSURL có một loạt các bộ truy xuất. Bạn có thể kiểm tra chúng trong tài liệu cho lớp NSURL, phần Truy cập các phần của URL. Để tham khảo nhanh:

  • -[NSURL scheme] = http
  • -[NSURL resourceSpecifier] = (tất cả mọi thứ từ // vào cuối URL)
  • -[NSURL user] = foobar
  • -[NSURL password] = nicate
  • -[NSURL host] = example.com
  • -[NSURL port] = 8080
  • -[NSURL path] =/some/pat h/file.html
  • -[NSURL pathComponents] = @ [ "/", "một số", "con đường", "file.html"] (lưu ý ban đầu/là một phần của nó)
  • -[NSURL lastPathComponent] = file.html
  • -[NSURL pathExtension] = html
  • -[NSURL parameterString] = params-đây
  • -[NSURL query] = foo = bar
  • -[NSURL fragment] = baz

Những gì bạn sẽ muốn, tuy nhiê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, hos t và thành phần đường dẫn đầu tiên. (Các phần tử ở chỉ số 0 trong mảng trả về bởi -[NSString pathComponents] chỉ đơn giản là "/", vì vậy bạn sẽ muốn phần tử tại chỉ số 1. slashes khác sẽ bị loại bỏ.)

+2

cảm ơn bạn rất nhiều – Melina

+0

người trả lời tuyệt vời, cảm ơn! –

+9

cho bất kỳ ai đọc điều này: bạn cần phải nhận '[url.pathComponents objectAtIndex: 1]' thay vì chỉ mục '0', vì các dấu gạch chéo thực sự là các phần tử của mảng, làm cho mã trong câu trả lời này xuất ra' http: // digg.com // ' – Dima

3

Using Playground , language swift, I got this ! Sân chơi cung cấp một cách tương tác nhìn thấy điều này trong hành động. Tôi hy vọng bạn có thể thích làm như vậy, một cách thú vị để tìm hiểu NSURL một chủ đề quan trọng trong iOS.

Các vấn đề liên quan