在objective-c中获取NSURL的一部分

我有一个NSString的值

http://digg.com/news/business/24hr 

我怎样才能得到第三级之前的一切?

 http://digg.com/news/ 

这不完全是第三级,介意你。 一个URL像这样分裂:

  • 协议或scheme(这里, http
  • ://分隔符
  • 用户名和密码(这里没有,但可以是username:password@hostname
  • 主机名(这里是digg.com
  • 该端口(例如:80后的域名)
  • path(这里是/news/business/24hr
  • 参数string(任何后面的分号)
  • 查询string(这将是如果你有GET参数像?foo=bar&baz=frob
  • 该片段(这将是如果你有一个链接锚点,如#foobar )。

一个“全function”的URL将如下所示:

 http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz 

NSURL有广泛的访问者。 您可以在NSURL类的文档中检查它们, 访问URL的部分 。 快速参考:

  • -[NSURL scheme] = http
  • -[NSURL resourceSpecifier] =(从//到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”](注意最初/是它的一部分)
  • -[NSURL lastPathComponent] = file.html
  • -[NSURL pathExtension] = html
  • -[NSURL parameterString] = params-here
  • -[NSURL query] = foo = bar
  • -[NSURL fragment] = baz

你想要什么,但是,是这样的:

 NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"]; NSString* reducedUrl = [NSString stringWithFormat: @"%@://%@/%@", url.scheme, url.host, url.pathComponents[1]]; 

对于您的示例URL,您似乎需要的是协议,主机和第一个path组件。 (由-[NSString pathComponents]返回的数组中索引为0的元素只是“/”,所以您需要索引为1的元素。其他斜线将被丢弃。

使用游乐场,语言快捷,我明白了! 游乐场提供了一个互动的方式来看待这个行动。 我希望你能喜欢做同样的,一个有趣的方式来学习NSURL在iOS的一个重要的话题。