我正在尝试从我的 Swift
应用程序打开 pdf 文件,但无法使其正常工作。
我知道有很多与此相关的问题,其中大多数问题都使用此代码:
UIApplication.shared.openURL(URL(string: "http://www.url.com" + id)!)
但我收到以下错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
所以我认为错误是因为 id
为零,所以我做了两个 print
来查看检索到的内容:一个用于 url
一个用于 id
。它们都是正确的,如果我复制浏览器导航栏上的 url,它会完美运行(我无法提供真实的 url
,因为它是客户端的)。
我将此函数封装在 @IBAction
中,以检测何时单击按钮,以便查看连接是否已断开。这也是正确的。
所以我不明白为什么会发生这个错误。我花了几个小时但无法找出导致此错误的原因。
我错过了什么吗?我应该以某种方式编码网址吗?
P.S:我正在使用 Xcode8
和 Swift3
。
更新:如果我设置www.google.es
,它就可以正常工作。使用 url 内的变量会出现问题吗?
提前致谢!
最佳答案
最后,经过几个小时搜索问题并按照 @rmaddy
的建议(谢谢!)我将我的函数分成三部分,我可以看到 URL 返回 零
值。
这很奇怪,因为我可以将字符串复制到浏览器导航栏中,并且效果很好,所以我认为这可能与编码有关。有一次我对其进行编码时,我注意到 pdf 的 id
是通过 id
末尾的 \r
检索的。像这样:
id004.pdf\r
我所做的解决方案如下:
var string = "http://www.url.com" + id
var index1 = string.index(string.endIndex, offsetBy: -1)
var substring1 = string.substring(to: index1)
let encodedString = substring1.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
UIApplication.shared.openURL(NSURL(string: encodedString!) as! URL)
编码字符串是必要的,因为如果没有编码字符串,链接将不再有效。
关于ios - 如何在 Swift 上单击按钮时打开 pdf 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40026229/