0

私は次のコードを持っています-それはtempを持つオブジェクトでなければならないことに注意してください、しかし私は説明します。

NSString *temp =  _passedOnURL;
NSString *temp = @"http://google.com"; //I comment the one out that I do not use.

NSLog(@"TEMP - %@", temp);

NSURL *feedURL = [NSURL URLWithString:temp];
NSLog(@"FEED URL - %@", feedURL);

_passedOnURLは、Segueから渡された内容を含む文字列です。

ここで、最初の一時を使用すると、FEED URLは(null)を返しますが、ログの一時はまだそこにあるため、どういうわけかNSURLは文字列を読み取りません。

2番目の一時で文字列をハードコーディングすると、問題はありません。

私の考えでは、NSStringを読み取っているときのNSURLにはまだ違いはありませんが、動作が異なるようです。

これには何か理由がありますか?

編集

次のコードを実行しても問題はありません。

_passedOnURL = @"http://www.google.com";

だから私は本当にこれについての説明がありません???

4

4 に答える 4

2

tempに無効なURL文字列が保存されているようです。すべての文字列をURLに変換できるわけではありませんが、有効なURLに変換できます。無効な文字と形式は、+ URLWithString:の後にnilオブジェクトを導きます。では、これを試してみると、一時的に何が保存されているかを教えていただけますか?

于 2012-12-06T02:20:05.843 に答える
2

エスケープしてみてください:[NSURL URLWithString:[temp stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]

于 2012-12-06T02:21:00.390 に答える
1

URLWithStringのドキュメントによると:

パラメータ
URLString

NSURLオブジェクトを初期化するための文字列。RFC 2396に準拠するURLである必要があります。このメソッドは、RFC1738および1808に従ってURLStringを解析します。

戻り値

URLStringで初期化されたNSURLオブジェクト。文字列の形式が正しくない場合は、nilを返します。

だから私の推測では、あなた_passedOnURLは有効なURLではありません。

于 2012-12-06T02:19:10.647 に答える
0

_passedOnURLに対してNSLogを実行して、他のセグエから文字列が正しく取得されているかどうかを確認します。

于 2012-12-06T01:58:21.267 に答える