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

Check whether the file retrieved from Firestore is empty

我需要确保我始终可以从后端反馈一个 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 使用可选图像,但它是一个额外的安全层,这就是你显然是在追求。