Protocolo Swift Implement LiteralConvertible
Estou tentando implementar o protocolo IntegerLiteralConvertible emUIColor
. O que eu realmente gostaria de fazer é isso
let black: UIColor = 0x000000
Eu tentei seguir o blog rápido aquihttps://developer.apple.com/swift/blog/?id=8 o que não funciona imediatamente. Parece de acordo com o fluxo rápidohttps://github.com/ksm/SwiftInFlux#literalconvertible-protocols-use-constructor que eles não estão mais usando convertFromIntegerLiteral e, em vez disso, usam o inicializador. Portanto, é o que devemos ter:
extension UIColor: IntegerLiteralConvertible {
public convenience init(integerLiteral value: IntegerLiteralType) {
UIColor(red: 1, green: 0, blue: 0, alpha: 1)
}
}
Mas então o que se passa dentro do inicializador? Eu não posso me definir. Eu gostaria de dizer algo como
self.init(red: 0, green: 0, blue: 0, alpha: 1)
isso não funciona e nada mais parece. Eu recebo o erro "requisito de inicialização init (IntegerLiteral) só pode ser atendido por um inicializador 'obrigatório' na definição da classe não final 'UIColor'", o que não ajuda muito. Alguma idéia de como fazer isso funcionar?