获取URL的不同方式

时间:2011-07-22 16:13:01

标签: iphone objective-c url nsurl

为了获得网址,我通常会这样做。

    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 = ~~~)时,该程序运行良好。 你能让我知道有什么区别吗? 获取流式传输的网址的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

第二种方法将百分比转义一些URL中通常不允许的字符。例如,不允许使用空格字符,并将其编码为%20。 NSURL不支持传递包含尚未转义为+ URLWithString:的非允许字符的字符串,因此首先通过CFURLCreateStringByAddingPercentEscapes传递字符串将允许您支持此类URL。

答案 1 :(得分:0)

有趣,

然而,在NSString文档中挖掘你会发现这两个函数:

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

我认为这是“官方”的做法