如何判断 UIImage 是否为空?

How do I determine whether a UIImage is empty?

如何检查 UIImage 是否为空?

class UserData {
    ...
    var photo: UIImage = UIImage()
}

我的 ViewController 代码如下:

var userData = UserData()
    ...

func preparePhoto(){
        if (self.userData.photo == nil) {
            ...
        }else{
            ...
        }
    }

self.userData.photo == nil 在 Swift 中不起作用。

Xcode 说:UIImage is not convertible to MirrorDisposition

self.userData.photo 永远不会 为零,所以这个问题毫无意义。

原因是您已将 photo 声明为 UIImage。这与 UIImage? - 包装 UIImage 的 Optional 不同。 Swift 中只有 Optional 可以为 nil。但是,正如我刚才所说,photo 而不是 可选的。因此没有什么可检查的。这就是为什么 Swift 在您尝试执行此类检查时阻止您的原因。

那么,怎么办?我有两个可能的建议:

  • 我对解决这个问题的实际建议是 do 输入 photo 作为 UIImage? 并将其初始设置为 nil (实际上,它从一开始就隐式地为 nil)。现在您可以检查 nil 以查看是否已将实际图像分配给它。

    但请记住,当您想要将它用于任何用途时,您必须记得打开 photo! (您可以输入 photo 作为隐式解包的可选值,UIImage!,以避免不断的解包,但我不太喜欢这个想法。)

  • 另一种可能性是检查图像的大小。如果它是零大小,它可能是你问题的原始意义上的空图像!