所以我有这样的网址:
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的空格,但这看起来有点脆弱。
提前谢谢你。
答案 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())
希望这会对你有所帮助