2016-06-17 40 views
0

我有以下代碼NSData contentsOfURL返回無?

import Foundation 

let url = NSURL(string: copiedURL) 
let data = NSData(contentsOfURL: url!) 
print("\(data)") 
let image2 = UIImage(data: data!) 

當我建立和運行,我收到以下錯誤fatal error: unexpectedly found nil while unwrapping an Optional value

let image2 = UIImage(data: data!) 

我想修改我Info.plist具有以下

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

但錯誤仍然存​​在。我可以嘗試更多可行的解決方案嗎?

+0

您的網址是否指向有效圖片? –

+1

不要對網絡請求使用'contentsOfURL:'。 –

+0

我們需要在這之前看到代碼,具體說明'copiedURL'是什麼以及你是如何到達的。您是否嘗試加載位於系統本地文件上的圖像,或者是否在網絡上? – NSGod

回答

0

這裏有幾種可能性。

  1. 的copiedURL沒有被正確地轉換爲一個NSURL
  2. 的NSURL不被轉換爲NSData的
  3. 該圖像是無法加載數據

嘗試以下方法:

if let url = NSURL(string: copiedURL) { 
    print(url) 
    if let data = NSData(contentsOfURL: url) { 
     print(data) 
     let image2 = UIImage(data: data) 
    } 
} 

這幾乎從來都不是一個好主意,而是強制解包東西(!),而不是使用guardif let解開,從而能夠處理無條件。

有關如何正確下載圖像,請參閱:Loading/Downloading image from URL on Swift

0

試試下面的代碼:

if let url = NSURL(string: copiedURL) { 
    if let data = NSData(contentsOfURL: url) { 
    print("\(data)") 
    let image2 = UIImage(data: data) 
    } 
} 

如果copiedURL具有有效的圖像,你會得到它,否則ATLEAST您的應用程序不會崩潰。