为了获得网址,我通常会这样做。
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链接。
这两种方法之间的差异是什么? 当我用(escapedValue = downloadSourceField.text;)替换第二个方法(escapedValue = ~~~)时,该程序运行良好。 你能让我知道有什么区别吗? 获取流式传输的网址的最佳方法是什么?
答案 0 :(得分:2)
第二种方法将百分比转义一些URL中通常不允许的字符。例如,不允许使用空格字符,并将其编码为%20。 NSURL不支持传递包含尚未转义为+ URLWithString:的非允许字符的字符串,因此首先通过CFURLCreateStringByAddingPercentEscapes传递字符串将允许您支持此类URL。
答案 1 :(得分:0)
有趣,
然而,在NSString文档中挖掘你会发现这两个函数:
- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
我认为这是“官方”的做法