Другой способ получить URL - PullRequest
0 голосов
/ 22 июля 2011

Чтобы получить URL, я обычно иду по этому пути.

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

Конечно, urlText связан с UITextField.

Однако недавно я видел этот код в программе audioStreaming.
( Это программа. )

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

downloadSourceField связан с UITextField.

В чем разница между этими двумя методами?
Когда я заменил второй метод (escapedValue = ~~~) на (escapedValue = downloadSourceField.text;), программа работала хорошо.Не могли бы вы дать мне знать, в чем разница?И каков наилучший способ получения URL для потоковой передачи ?

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Второй метод будет экранировать в процентах некоторые символы, которые обычно не допускаются в URL. Например, символ пробела недопустим и будет закодирован как% 20. NSURL не поддерживает передачу строки, содержащей недопустимый символ, который не был экранирован в + URLWithString:, поэтому передача строки через CFURLCreateStringByAddingPercentEscapes сначала позволит вам поддерживать такие URL-адреса.

0 голосов
/ 23 июля 2011

интересно,

однако, копаясь в документах NSString, вы обнаружите две эти функции:

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

Я думаю, что это "официальный" способ сделать это

...