Swift: 检查 UIImage 失败初始化

Swift: Checking UIImage failable init

我想检查图像是否存在,但在失败的初始化中...我可以做得很丑,但我真的想知道 self == nil 是否可能...

extension UIImage {

    convenience init?(_ name:String) {
        let image = UIImage(named:name)
        guard image != nil else { Assert("image \(name) missing yo"); return nil }
        self.init(named: name)
    }
}

更干净但无法编译

extension UIImage {

    convenience init?(_ name:String) {
        self.init(named: name)
        if self == nil { Assert("image \(name) missing yo") }
    }
}

static func 没有 init 有趣

extension UIImage {

   static func with(_ name:String) -> UIImage? {
        let image = UIImage(named:name)
        if image == nil { Assert("image \(name) missing yo") }
        return image
   }
}

提前感谢您的宝贵时间

** 编辑 **

也许我两者都需要?

extension UIImage {
    convenience init?(_ name:String) {
        self.init(named:name)
   }
}

extension Optional where Wrapped == UIImage {
    init?(_ name:String) {
        self.init(name)
        if self == nil {
            Assert("image \(name) missing yo")
        }
   }
}

我不是 100% 确定我的问题是否正确。但我认为你想要这样的东西:(让我知道它是否有帮助或为什么没有帮助)

extension Optional where Wrapped == UIImage {

    init?(_ name:String) {
        self.init(name)
        if self == nil {
            Assert("image \(name) missing yo")
        }
    }
}