2011-07-22 41 views
0

URLを取得するために、私は通常この方法に従います。URLを取得する別の方法

NSString *userText = urlText.text; 
    NSURL *url = [NSURL URLWithString:userText]; 

もちろん、urlTextはUITextFieldにリンクされています。

しかし、最近、私はこのコードをaudioStreamingプログラムで見ました。
This is the program.

NSString *escapedValue = 
    [(NSString *)CFURLCreateStringByAddingPercentEscapes(nil, (CFStringRef)downloadSourceField.text, NULL, NULL, 
                 kCFStringEncodingUTF8) autorelease]; 
NSURL *url = [NSURL URLWithString:escapedValue]; 

downloadSourceFieldはUITextFieldのとリンクされています。

これら2つの方法の違いは何ですか?
2番目のメソッド(escapedValue = ~~~)を(escapedValue = downloadSourceField.text;)に置き換えたとき、プログラムは正常に機能しました。 違いは何ですか? ストリーミングのURLを取得する最も良い方法は何ですか?

答えて

2

2番目の方法では、通常はURLで許可されていない文字がパーセントエスケープされます。たとえば、スペース文字は許可されず、%20としてエンコードされます。 NSURLは、+ URLWithString:にはエスケープされていない許容されない文字を含む文字列を渡すことをサポートしていないため、CFURLCreateStringByAddingPercentEscapesに文字列を渡すと、そのようなURLをサポートできます。

0

興味深い、しかし

、あなたはこれらの二つの機能を見つけるNSStringのドキュメントで掘り:

- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding 
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding 

私はそれらがこの

を行うための「公式」の方法だと思います
関連する問題