NSData contentsOfURL返回Nil?

时间:2016-06-17 18:29:57

标签: ios swift nsdata

我有以下代码

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>

但错误仍然存​​在。我可以尝试更多可能的解决方案吗?

2 个答案:

答案 0 :(得分:0)

这里有几种可能性。

  1. 复制的URL未正确转换为NSURL
  2. NSURL未转换为NSData
  3. 图片无法加载数据
  4. 尝试以下方法:

    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

答案 1 :(得分:0)

请尝试以下代码:

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

如果copiedURL包含有效图片,您将获得该图片,否则至少您的应用不会崩溃。