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 で許可されていない文字をエンコードする必要があります。 「%」文字の後に 2 桁の 16 進数が続くという規則。

于 2012-10-17T18:12:43.987 に答える