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

时间:2016-06-18 06:54:47

标签: ios swift url

所以我有这样的网址:

let remoetURL = "http://xxx-test.img-cn-hangzhou.aliyuncs.com/materials/talk_-XXXXX-XXXXXXX/STEM RULE.pdf"

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

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

let escapedString = remoteURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())

但这并未返回预期的工作网址,因为它在“http”之后编码“:”

http%3A//xiaobandeng-staging.img-cn-hangzhou.aliyuncs.com/talk_materials/talk_-K4yjX4-238Ku74WVIJk/STEM%20RULE.pdf

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

提前谢谢你。

2 个答案:

答案 0 :(得分:9)

尝试使用 SwiftyJSON

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

Swift 3

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

答案 1 :(得分:0)

你试试这个吗?

let urlPath = NSString(format: remoetURL).stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!

iOS 9

let encodedHost = NSString(format: remoetURL).stringByAddingPercentEncodingWithAllowedCharacters(.URLQueryAllowedCharacterSet())

希望这会对你有所帮助