周末写学习英语小助手播放网络音频时,发现有些音频无法加载。仔细一看,发现使用URL初始化一个String时并不会对它进行URLEncode,所以会导致AVPlayer加载失败。搜索一下之后,留下这张小纸条。我的处理方法就是extension String,为String加入两个方法,使用了Foundation的两个方法对String进行URLEncode和URLDecode。
import Foundation
extension String {
func urlEncoded() -> String {
let encodeUrlString = addingPercentEncoding(withAllowedCharacters:.urlQueryAllowed)
return encodeUrlString ?? ""
}
//将编码后的url转换回原始的url
func urlDecoded() -> String {
return removingPercentEncoding ?? ""
}
}
使用上就非常简单了:
let url = "http://github.com/this is space/这是中文"
print(url.urlEncoded())
print(url.urlEncoded().urlDecoded())
效果如下图: