检查从Firestore检索到的文件是否为空



我需要确保我总是可以从后端反馈一个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可以拍摄可选图像,但它是一个额外的安全层,这显然是你想要的。

最新更新