一尘不染

在Swift 2.0中如何将stringByAddingPercentEncodingWithAllowedCharacters()用于URL

swift

我在Swift 1.2中使用了这个

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

现在,这给了我一个警告,要求我使用

stringByAddingPercentEncodingWithAllowedCharacters

我需要使用 NSCharacterSet 作为参数,但是有这么多,而且我无法确定是哪个将给我与以前使用的方法相同的结果。

我要使用的示例网址如下所示

http://www.mapquestapi.com/geocoding/v1/batch?key=YOUR_KEY_HERE&callback=renderBatch&location=Pottsville,PA&location=Red Lion&location=19036&location=1090 N Charlotte St, Lancaster, PA

用于编码的URL字符集似乎包含修剪URL的集。即

URL的路径组件是紧随主机组件(如果存在)之后的组件。它在查询或片段组件开始的任何地方结束。例如,在URL
http://www.example.com/index.php?key1=value1中,路径组件是/index.php。

但是我不想修剪任何方面。例如myurlstring,当我使用String时,它将失败。

但是,当使用以下内容时,则没有问题。它使用某种魔术对字符串进行编码,我可以获得我的URL数据。

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

因为它

使用给定的编码返回String的表示形式,以确定将String转换为合法URL字符串所需的转义百分比

谢谢


阅读 800

收藏
2020-07-07

共1个答案

一尘不染

对于给定的URL字符串,等效于

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

是字符集 URLQueryAllowedCharacterSet

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())

斯威夫特3:

let urlwithPercentEscapes = myurlstring.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)

它对URL字符串中问号后的所有内容进行编码。

由于该方法stringByAddingPercentEncodingWithAllowedCharacters可以返回nil,因此请使用Leo
Dabus的答案中建议的可选绑定。

2020-07-07