我有关于网址和网页视图的x 2个问题。
问题1:
我有一个字符串,我从API应该是一个网址。字符串为https://godochurch.blob.core.windows.net/sermons/1031/30-1-2017-Vision Sunday-Devotion.mp3
当尝试转换为网址时,我得到的是 以下是代码: 我已经确定了“视觉”与“视觉”之间的空间。和周日'是问题。 在尝试将字符串转换为URL之前,我是否应该以某种方式对字符串进行编码?令人困惑的是,如果我将字符串粘贴到我的浏览器中它工作得很好,但我注意到浏览器是对空间进行编码的百分比。 如果我应该编码字符串,我该怎么做? 问题2:
我看到 提前感谢您的时间。if let sermonUrl = sermonUrl {
if let url = URL(string: sermonUrl) {
let requestObj = URLRequest(url: url)
webView.loadRequest(requestObj)
}
}
URL(string: "urlStringHere")
仅适用于iOS 10.我的应用程序需要适用于iOS 9.如何转换上述代码,以便在iOS 9和10上运行。
答案 0 :(得分:2)
1:使用%20
或+
if let url = URL(string: "https://godochurch.blob.core.windows.net/sermons/1031/30-1-2017-Vision%20Sunday-Devotion.mp3") {
// ...
}
2:URL
与Swift 3一起推出,它与iOS 8及更高版本兼容。有关如何使其适用于旧版iOS的信息,请参阅this question。
修改:百分比转义网址的最简单方法是使用URLComponents
:
var components = URLComponents(string: "https://godochurch.blob.core.windows.net")!
components.path = "/sermons/1031/30-1-2017-Vision Sunday-Devotion.mp3"
if let url = components.url {
// ...
}
如果您碰巧从Web服务获取URL字符串并且它包含空格,那么该服务很糟糕。 URL中不允许使用空格。 Web浏览器放宽了这个规则,因为他们知道那里有糟糕的URL。斯威夫特不会接受它。