Swift реализует протокол LiteralConvertible

Я пытаюсь реализовать протокол IntegerLiteralConvertible наUIColor, То, что я действительно хотел бы сделать, это

 let black: UIColor = 0x000000

Я сначала попробовал следовать за быстрым блогом здесьhttps://developer.apple.com/swift/blog/?id=8 который не работает из коробки. Похоже, по быстрому течениюhttps://github.com/ksm/SwiftInFlux#literalconvertible-protocols-use-constructor что они больше не используют convertFromIntegerLiteral и вместо этого используют инициализатор. Соответственно, это то, что мы должны иметь:

extension UIColor: IntegerLiteralConvertible {
    public convenience init(integerLiteral value: IntegerLiteralType) {
    UIColor(red: 1, green: 0, blue: 0, alpha: 1)
    }
}

Но что тогда происходит внутри инициализатора? Я не могу установить себя. Я хотел бы сказать что-то вроде

self.init(red: 0, green: 0, blue: 0, alpha: 1)

это не работает и не делает ничего другого, как кажется. Я получаю сообщение об ошибке «Требование инициализатора init (IntegerLiteral) может быть удовлетворено только« обязательным »инициализатором в определении не финального класса UIColor», что не очень полезно. Есть идеи, как заставить это работать?

Ответы на вопрос(4)

Ваш ответ на вопрос