NSData contentsOfURL Returns 无?

NSData contentsOfURL Returns Nil?

我有以下代码

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>

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

这里有两种可能性。

  1. 复制的 URL 未正确转换为 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 来解包,从而能够处理 nil 条件。

参考:Loading/Downloading image from URL on Swift如何正确下载图片

试试下面的代码:

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

如果 copiedURL 有有效的图像,你会得到它,否则至少你的应用程序不会崩溃。