在项目实践中,发现URL在某些系统版本(14.7.1
)会返回nil
(即使不存在中文),所以在使用URL的时候最好进行以下编码:
在了解这个之前我们应该先了解一下url中#(hash)的含义
Swift3之前:
url.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
Swift3:
//编码
url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
//解码
url.removingPercentEncoding
对String进行扩展:
extension String{
public func toURL()->URL?{
//如果url带有hash则不处理
let range = range(of: "/#/")
if range != nil{
let Url = URL(string: self)
return Url
}
let eurl = addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
if eurl != nil{
let Url = URL(string: eurl!)
return Url
}
return nil
}
}