UIApplication openURL无法打开网址

时间:2012-09-27 12:25:05

标签: uitableview nsstring nsurl uiapplication openurl

我正在尝试实施求职搜索。结果将在UITableView中显示给用户。 当用户点击单元格时,它应该打开原始作业公告。 为此,我实现了以下方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    NSString *url = [[NSString alloc]init];
    url=[[[xmlParser jobs] objectAtIndex:indexPath.row] urlAddress]; //UrlAddress is an instance variable of type NSString
    NSURL *urlJobDetail = [NSURL URLWithString:(url)];

    [[UIApplication sharedApplication] openURL: urlJobDetail];
}

有趣的是:如果我输入像@“http://www.google.com”或任何其他链接的NSString,它就可以了。但是,当我尝试打开“urlJobDetail”时,它只是不起作用......没有任何事情发生......

我在stackoverflow.com上搜索了它,发现了这个:

url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

比网址有效,但此方法更改了原始网址,并添加了大量%符号,如: “http://www.google.com%20%20%20” 所以我找不到页面错误。

我不明白为什么这个函数不接受常规的NSString变量?

我用NSLog检查了它,网址似乎完全正常。

任何帮助都会非常多,非常感谢!

提前致谢

1 个答案:

答案 0 :(得分:1)

因为它是URL specification 相关的限制

  

必须转义URL中的空格和控制字符以便在HTTP中传输,其他不允许的字符也必须进行传输......必须对URL中不允许的任何字符进行编码,包括空格和不在允许的字符集中的其他二进制数据,使用“%”字符的标准约定,后跟两个十六进制数字。