Swift 展开后,url中的图像数据为零
我正在使用Swift 4并尝试从我的服务器获取图像。在终端中使用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(
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
,所以我可以从中检索图像