2016-04-25 24 views
0

我的iOS應用程序從服務器獲取數據並使用'Kingfisher'渲染一些圖像,問題是每當我在服務器應用程序崩潰時添加或替換新圖像, : 「致命錯誤:意外發現零而展開的可選值Swift展開可選的給數據提供的錯誤

let prfix:String = "MY_PREFIX_URL /\(org.image)" 
celImage.kf_setImageWithURL((NSURL(string: prfix))!) 

請檢查sceeenshot更多細節error screenshot 我不爲什麼已瞭解我得到這個錯誤,因爲你可以請參閱prfix有價值。

+0

請發佈完整圖像的網址。這是安全的:) – Arsen

+5

最好的辦法是拉線分開;將你的'NSURL'分配給一個變量。檢查它是否爲零。如果是,請仔細查看網址。爲什麼是零?如果不是零,那是什麼? org.title是否爲零?設置一個斷點。單步查看錯誤 – Paulw11

回答

0

我認爲它是由於prefix包含有不必要的字符,你可以用URLHostAllowedCharacterSet

解決這個問題

您可以修復prefix格式不正確的網址(swift 2.x)。

let urlStr : NSString = prfix.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())! 

celImage.kf_setImageWithURL((NSURL(string: urlStr as String))!) 

這將確保url只包含很好的字符串。

+0

'MY_PREFIX_URL'可以包含_more_而不僅僅是主機組件。例如:'https:// user:password @ www.example.com/path /'。所以,你的方法不可靠。 – CouchDeveloper

+0

這將起作用。但是如果網址不正確,它會返回空白圖片。最好的方法是Paulw11在他的評論中提到。分配給NSURL,做一個零檢查。如果失敗,請指定佔位符。 –

0

NSURL(string:)是failable初始化器,然後可以返回nil如果您string參數不是一個有效的URL,你可以NSURL的文檔閱讀:

Initialize a NSURLComponents with a URL string. If the URLString is malformed, nil is returned.

你必須檢查你的最終網址完整性,因爲顯然它是畸形的...

相關問題