2016-10-13 58 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) 

編碼字符串是必要的,因爲如果沒有鏈接不再起作用。

相關問題