Swift:字符串url编码无法按预期工作

Che*_*glu 4 url ios swift

所以我有一个这样的网址:

let remoetURL = "http://xxx-test.img-cn-hangzhou.aliyuncs.com/materials/talk_-XXXXX-XXXXXXX/STEM RULE.pdf"
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,在url的末尾,有一个空格,所以我需要摆脱它以获得一个有效的编码网址.

做了一些研究后,我意识到我可能会用

let escapedString = remoteURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())
Run Code Online (Sandbox Code Playgroud)

但是这并没有返回预期的工作URL,因为它也在"http"之后编码":"

http%3A//xiaobandeng-staging.img-cn-hangzhou.aliyuncs.com/talk_materials/talk_-K4yjX4-238Ku74WVIJk/STEM%20RULE.pdf
Run Code Online (Sandbox Code Playgroud)

我也试过了URLHostAllowedCharacterSet,但没有运气.所以我想知道是不是因为我这里没有www,所以它无法正确识别哪个部分是主机.如果是这样,那么优雅的解决方案是什么?我知道我可以通过调用stringByReplacingOccurrencesOfString来替换%20的空格,但这似乎有点脆弱.

先感谢您.

Dha*_*mar 9

尝试使用SwiftyJSON

let urlString = remoteURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

斯威夫特3:

let urlString = remoteURL.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)