单击 Swift 上的按钮时如何打开 pdf link?

How can I open a pdf link when click a button on Swift?

我正在尝试从我的 Swift 应用程序打开 pdf,但无法正常工作。

我知道有很多与此相关的问题,其中大部分都使用以下代码:

UIApplication.shared.openURL(URL(string: "http://www.url.com" + id)!)

但我收到以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

所以我认为错误是因为 id 是零所以我制作了两个 prints 来查看检索到的内容:一个用于 url 一个用于 id.它们都是正确的,如果我在浏览器导航栏上复制 url 它可以完美地工作(我无法提供真实的 url 因为它是客户端的)。

我将此函数封装在 @IBAction 中以检测何时单击按钮,因此我查看连接是否已断开。也是对的。

所以我不明白为什么会出现这个错误。我花了几个小时但无法弄清楚是什么导致了这个错误。

我错过了什么吗?我应该以某种方式编纂 url 吗?

P.S: 我正在使用 Xcode8Swift3.

更新: 如果我设置 www.google.es 它运行良好。在 url 中使用变量会不会有问题?

提前致谢!

最后,经过几个小时搜索问题并遵循 @rmaddy 的建议(谢谢!)我将函数分为三个部分,我可以看到 URL 正在返回 nil值。

这很奇怪,因为我可以将字符串复制到我的浏览器导航栏中并且它运行良好,所以我认为它可能与编码有关。有一次我对它进行编码,我注意到 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)

编码字符串是必需的,否则 link 将不再有效。