我需要确保我总是可以从后端反馈一个Image对象,但问题是不能保证每个查询都可以使用以下函数获得图像。
let store = Storage.storage().reference()
let imageRef = store.child("profile_Photos").child(uid)
imageRef.getData(maxSize: 1000 * 64 * 64, completion: { (data, error) in
if let error = error {
print("Encountered error: (error) when getting image")
self.currentPhoto = Image(systemName: "person").resizable()
} else {
// "data" can be 0 bytes
// do something to judge whether it is 0 or not
// in order to avoid any error in the next line
self.currentPhoto = Image(uiImage: UIImage(data: data!)!).resizable()
}
})
我可以做些什么来替换这些评论?
Data
有一个isEmpty
布尔值,所以如果你坚持这个额外的安全层,那么你可以简单地阅读它:
let store = Storage.storage().reference()
let imageRef = store.child("profile_Photos").child(uid)
imageRef.getData(maxSize: 1000 * 64 * 64, completion: { (data, error) in
if let error = error {
print("Encountered error: (error) when getting image")
self.currentPhoto = Image(systemName: "person").resizable()
} else if let data = data,
!data.isEmpty,
let img = UIImage(data: data).resizable() {
self.currentPhoto = img
}
})
你可以将UIImage
包含在条件中,也可以不包含,从实际意义上来说,这并不重要,因为UIImageView
可以拍摄可选图像,但它是一个额外的安全层,这显然是你想要的。