我正在尝试在Swift中执行一个安全的HTTP请求,但是一旦我尝试使用{}
的空格来转义一个字符串(为什么这个函数名这么久,认真),它似乎添加了很多空格和一些类似十六进制的表示法:
stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
老实说,我无法理解正在发生的事情
我的代码是:
"abc" -> "abc" (Looks fine)
"abc " -> "abc2 (No closing quotes?)
"abc a" -> "abc 0x0p+0" (?!)
这就是所谓的
func getLocations(query: String) -> String {
let safeQuery = query.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
NSLog("query: \(query) -> \(safeQuery)")
}
其中textField是视图中的文本字段。
答案 0 :(得分:3)
这是因为你使用了NSLog。
有了这个:
NSLog("query: \(query) -> \(safeQuery)")
你明白了:
查询:abc a - > abc 0x0p + 0
因为你正在使用NSLog和Swift的字符串插值。这不行。
使用NSLog自己的插值系统,其中每个%@
将被提供的项目替换,按顺序排列:
NSLog("query: %@ -> %@", query, safeQuery)
打印:
查询:abc a - > ABC%20A