我在Swift 1.2中使用了这个

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

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

stringByAddingPercentEncodingWithAllowedCharacters

我需要使用NSCharacterSet作为参数,但有这么多,我无法确定哪一个会给我与之前使用的方法相同的结果.

An example URL I want to use will be like this

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数据.

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

事实上

使用给定的编码将字符串的表示形式返回给

谢谢

推荐答案

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

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

角色集是URLQueryAllowedCharacterSet

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

Swift 3:

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

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

因为方法stringByAddingPercentEncodingWithAllowedCharacters可以返回nil,所以按照Leo Dabus的回答使用可选绑定.

Swift相关问答推荐

多个提取来计算核心数据中的记录

启用完成并发判断以及如何解决警告(续)

UITableView未显示类数组数据

SWIFT Vapor控制台应用程序-操作无法完成.权限被拒绝

SwiftUI同心圆,通过逐渐出现来显示进度

如何才能在同一线程上调用类中的每个方法,而不对每个调用使用同步块?

为什么 XUIView 中的 Binding 看不到更新后的值?

如何在 swiftui 中设置给定字符串类型日期的日期倒计时?

如何更新 UserDefault 中的特定值

按钮图像不会立即刷新

如何确定扩展中的具体类型?

如何在 Swift 中的两个 UIView 中心之间添加线?

如何根据 SwiftUI 中的字体大小定义按钮的大小?

如何在 SwiftUI 的 fileImporter 中为 allowedContentTypes 设置 xcodeproj 类型?

临时添加到视图层次 struct 后,Weak view引用不会被释放

在swift 3中将文件保存在文档目录中?

iOS/Swift:如何检测 UITextField 上的touch 动作

快速在 LLDB 中使用 po

Swift - 迭代 struct 对象时如何对其进行变异

Swift:创建 UIImage 数组