0

我正在尝试实现一个求职应用程序。结果在 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];

比 url 有效,但此方法更改了原始 url 地址并添加了许多 % 符号,例如:“http://www.google.com%20 %20 %20”所以我得到一个找不到页面的错误。

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

我用 NSLog 检查了它,并且 url 似乎是完美的。

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

提前致谢

4

1 回答 1

1

因为它是URL 规范相关的限制

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

于 2012-10-17T18:12:43.987 回答