93

URLWithString:とても簡単かもしれませんが、なぜここでnilが返されるのかわかりません。

//localisationName is a arbitrary string here
NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString* stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@,Montréal,Communauté-Urbaine-de-Montréal,Québec,Canadae&output=csv&oe=utf8&sensor=false&key=", webName];
NSURL* url = [NSURL URLWithString:stringURL];
4

8 に答える 8

201

ハードコードされた URL の非 ASCII 文字もエスケープする必要があります。

//localisationName is a arbitrary string here
NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString* stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@,Montréal,Communauté-Urbaine-de-Montréal,Québec,Canadae&output=csv&oe=utf8&sensor=false", webName];
NSString* webStringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:webStringURL];

文字列全体のエスケープによって処理されるため、おそらく localisationName のエスケープを削除できます。

于 2009-12-30T17:57:03.673 に答える
8

を使用する必要があると思います-[NSString stringByAddingPercentEscapesUsingEncoding:]Apple docを参照してください。

もう 1 つのコメントは、古いタイマーとして、非 ASCII 文字をソース ファイルに入れるのは少し難しいと思うということです。とはいえ、このApple docによると、10.4 以降では、UTF-16 文字列は 内で OK です@"..."。どういうわけか GCC は、Latin-1 のソース ファイルをバイナリで UTF-16 に正しく変換しているようですが、ソース コード内でのみ 7 ビット ASCII 文字を使用し、NSLocalizedString.

于 2009-12-30T17:46:54.063 に答える
2

あなたのアクセントのあるキャラクターは物事を台無しにしていると思います。-stringByAddingPercentEscapesUsingEncoding: では処理されません。

于 2009-12-30T17:47:00.043 に答える
0

URLWithString: 呼び出しは、渡された文字列の形式が正しくない場合、nil を返します。NSURL は不正な URL に対して nil を返すため、文字列を NSLog に記録し、ブレークポイントを設定して、NSURL 作成メソッドに何が渡されているかを正確に確認します。URLWithString がハードコードされた値で機能する場合、それは渡されたものが不正であることをさらに証明しています。見る

于 2010-03-15T19:21:18.287 に答える
-1

NSString なしで NSURL を直接使用できます。

//.h ファイル

@interface NewsBrowser : UIViewController {

    UIWebView *webView;
    NSURL *NewsUrl;

}

@property (nonatomic, retain) IBOutlet UIWebView *webView;

@property(nonatomic,assign)NSURL *NewsUrl;

@end

//.m ファイル

[webView loadRequest:[NSURLRequest requestWithURL:NewsUrl]];

そして、別のビュー (NewsUrl 変数を使用) からこのビューに URL を渡します。

それを試してみてください。

于 2011-01-11T08:52:08.157 に答える