来自 url 的图像数据在展开后为零
data of image from url is nil after unwrapping
我正在使用 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()
}
我不明白的是,如果我 copy/paste 字符串到我的浏览器, image
字符串确实显示了我想要的图像
(http://10.43.229.215:3000/lensPic/%E5%A4%AA%E5%A6%83%E7%B3%96%E6%9D%8F.png)
但是,错误出现在 self.LensImageView.image = UIImage(data: data)
行,表示 Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
。
我真的很困惑:
- 如果已经有
guard let
方法,数据怎么会是nil
?
- 为什么我可以通过浏览器显示图像,为什么数据为零?
非常感谢任何帮助!
问题在于对什么是零做出了错误的假设。它与图像或数据无关。 nil的是self.LensImageView
,出口属性。
我正在使用 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()
}
我不明白的是,如果我 copy/paste 字符串到我的浏览器, image
字符串确实显示了我想要的图像
(http://10.43.229.215:3000/lensPic/%E5%A4%AA%E5%A6%83%E7%B3%96%E6%9D%8F.png)
但是,错误出现在 self.LensImageView.image = UIImage(data: data)
行,表示 Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
。
我真的很困惑:
- 如果已经有
guard let
方法,数据怎么会是nil
? - 为什么我可以通过浏览器显示图像,为什么数据为零?
非常感谢任何帮助!
问题在于对什么是零做出了错误的假设。它与图像或数据无关。 nil的是self.LensImageView
,出口属性。