【问题标题】:How can I open a pdf link when click a button on Swift?单击 Swift 上的按钮时如何打开 pdf 链接?
【发布时间】:2016-10-13 16:21:24
【问题描述】:

我正在尝试从我的 Swift 应用程序中打开一个 pdf,但我无法使用它。

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

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

但我收到以下错误:

致命错误:在展开可选值时意外发现 nil

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

我将这个函数包裹在@IBAction 中,以检测何时单击按钮,因此我查看了连接是否已断开。也是正确的。

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

我错过了什么吗?我应该以某种方式编码网址吗?

P.S:我正在使用Xcode8Swift3

更新:如果我设置www.google.es,它工作得很好。在 url 中使用变量会不会有问题?

提前致谢!

【问题讨论】:

  • 拆分您的代码,以便您查看原因。首先构建字符串。然后创建URL。然后拨打openURL。然后你就会找到真正的原因。
  • 当我使用URL(string: mystring) 时,它给了我nil 值,但是如果我复制浏览器导航栏上的网址,它就可以工作。

标签: ios swift nsurl


【解决方案1】:

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

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

编码字符串是必要的,否则链接将不再有效。

【讨论】:

    猜你喜欢
    • 2018-09-30
    • 2014-07-11
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 2015-03-09
    • 2022-10-02
    • 2017-07-16
    • 1970-01-01
    相关资源
    最近更新 更多