URL主机名返回null

时间:2012-10-29 22:03:29

标签: iphone objective-c ios

我需要获取字符串url的主机名

我正在尝试从字符串创建NSURL对象,然后使用NSURL的host属性来获取主机名。但主机名始终为空。

NSURL *url = [NSURL URLWithString: @"www.google.com"];
NSLog(@"Host name %@", url.host);

但主机名始终为null。 任何人都可以解释为什么主机名为空?

编辑:很遗憾在提问时我错过了引号和逗号。但问题仍然存在。

3 个答案:

答案 0 :(得分:7)

根据Apple documentation

- (NSString *)host;

返回值

  

网址的主机。如果接收者不符合RFC 1808,   返回nil

因此,如果它不符合RFC 1808,它将返回nil。根据{{​​3}}的定义,

正确的语法如下:

<scheme>://<net_loc>/<path>;<params>?<query>#<fragment>

因此,您需要在形成http://时添加NSURL

NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSLog(@"Host name %@", url.host);

答案 1 :(得分:1)

看起来你错过了“www.google.com之后?尝试添加它。

NSURL *url = [NSURL URLWithString: @"www.google.com"];
NSLog(@"Host name %@", url.host);                  ^
                     ^

(关于第二行的注意事项我也添加了一个逗号,我试着以最好的方式指出它)

编辑:啊,好吧那么它可能是第二行的逗号。

答案 2 :(得分:0)

如果你这样做(添加http://):

,这将更好
NSURL *url = [NSURL URLWithString: @"http://www.google.com"];
NSLog(@"Host name %@", url.host);
相关问题