2016-06-17 41 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您的应用程序不会崩溃。