Swift 在便利 init 中解开可选 init

Chi*_*buZ 2 init swift option-type

是否可以在便利 init 内以某种方式解开可选 init ?

convenience init(...) {
   self.init?(...) ?? self.init()
}
Run Code Online (Sandbox Code Playgroud)

实际上,我正在尝试为以下内容提供便利UIColor

extension UIColor {
    convenience init(for item: ItemType) {
       self.init(named: item.rawValue) ?? self.init() // something like this
       //self.init(named: item.rawValue)! // works
    }
}
Run Code Online (Sandbox Code Playgroud)

mat*_*att 5

初始化器的说话方式受到严格限制。但工厂方法不是!编译(并运行):

extension UIColor {
    static func create(for item: ItemType) -> UIColor {
        UIColor(named: item.rawValue) ?? UIColor()
    }
}
Run Code Online (Sandbox Code Playgroud)