Swift 展开后,url中的图像数据为零

Swift 展开后,url中的图像数据为零,swift,uiimage,urlsession,unwrap,Swift,Uiimage,Urlsession,Unwrap,我正在使用Swift 4并尝试从我的服务器获取图像。在终端中使用ipconfig,我知道本地主机的ip是10.43.229.215。 以下代码用于检索图像数据并将其转换为UIImage: func GetImage(url:String) { let image = String(localIP + url).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! let url = URL(

我正在使用Swift 4并尝试从我的服务器获取图像。在终端中使用
ipconfig
,我知道本地主机的ip是
10.43.229.215
。 以下代码用于检索图像数据并将其转换为
UIImage

func GetImage(url:String) {
        let image = String(localIP + url).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
        let url = URL(string: image)
        print(image)
        URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
            if error != nil {
                print("Client error!")
                return
            }
            guard let data = data else {
                print("Error: did not receive data")
                return
            }
            DispatchQueue.main.async {
                self.LensImageView.image = UIImage(data: data)
            }
        }).resume()
    }
我不明白的是,如果我将字符串复制/粘贴到浏览器中,
图像
字符串确实显示了我想要的图像 () 但是,错误出现在行
self.LensImageView.image=UIImage(数据:数据)
上,表示
致命错误:隐式展开可选值时意外发现为零。
我真的很困惑:

  • 如果已经有一个
    guard let
    方法,数据怎么可能是
    nil
  • 为什么数据可以为零?因为我可以通过浏览器显示图像

  • 非常感谢您的帮助

    问题在于对什么是零做出错误的假设。它与图像或数据无关。nil是插座属性self.LensImageView

    设url=url(字符串:图像)
    ,是否为零?Else是
    LensImageView
    nil但设置为非可选?LensImageView是隐式展开的可选?如果方法无法从指定数据初始化图像,则包含数据的UIImage初始化器可能返回nil。无法访问您提供的图像链接进行检查。这不是因为数据为零。您的URL为http://&而不是https://。您需要确保已在.plist文件中的NSAppTransportSecurity dictionary下将NSAllowsArbitraryLoads密钥设置为YES。我刚刚发现我的LensImageView为nil,但数据是正确的。谢谢大家的帮助!是的,我刚想出来。我很好奇ui属性是如何以及何时为零的?在我的例子中,LensImageView是UICollectionViewCell的一部分。我不确定它什么时候不是
    nil
    ,所以我可以从中检索图像