ios - 如何在 Swift 上单击按钮时打开 pdf 链接?

标签 ios swift nsurl

我正在尝试从我的 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:我正在使用 Xcode8Swift3

更新:如果我设置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/

相关文章:

iphone - 控制不进入完成 block

ios - Swift - 调整 fontSize 以适应布局的宽度(以编程方式)

iOS swift 。如何仅从 UIImage (NSURL) 获取 GPS 元数据?

ios - 将 NSURL 的 PDF 保存在本地 - 检索

php - Swift:NSURL 正确地从 Playground 中的 URL 返回 HTML,但在应用程序中使用时会使模拟器崩溃

ios - FB 应用程序未在 IOS 中正确集成

ios - Swift 数组中的数组

iphone - 在iphone中获取屏幕分辨率

json - 使用 UISearchBar 文本搜索 UITableView 单元格

ios - 如何将 UIImageView 限制在另一个 View 中?