我正在尝试实施求职搜索。结果将在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检查了它,网址似乎完全正常。
任何帮助都会非常多,非常感谢!
提前致谢
答案 0 :(得分:1)
因为它是URL specification 相关的限制
必须转义URL中的空格和控制字符以便在HTTP中传输,其他不允许的字符也必须进行传输......必须对URL中不允许的任何字符进行编码,包括空格和不在允许的字符集中的其他二进制数据,使用“%”字符的标准约定,后跟两个十六进制数字。