2016-10-13 59 views
0

我想从我的Swift应用程序中打开pdf,但我无法使其工作。单击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,因为它是一个客户端)。

我有这个函数包裹在一个@IBAction检测何时点击一个按钮,所以我看,如果连接已断开。这也是正确的。

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

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

P.S:我使用的是Xcode8Swift3

更新:如果我设置www.google.es它是完美的工作。它可能是一个问题使用内部的变量?

在此先感谢!

+1

拆分您的代码,以便查看原因。首先建立字符串。然后创建“URL”。然后调用'openURL'。然后你会发现真正的原因。 – rmaddy

+0

当我使用'URL(字符串:mystring)'时,它给了'nil'值,但是如果我在浏览器导航栏上复制它的URL,它就会起作用。 –

回答

0

最后,经过几个小时的搜索后发现问题,并按照@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) 

编码字符串是必要的,因为如果没有链接不再起作用。

相关问题