O requisito do inicializador 'init (json :)' pode ser atendido apenas por um inicializador `required` na definição da classe não final 'UIColor'

Estou tentando escrever uma extensão para satisfazer um protocolo em uma extensão como esta:

extension UIColor: JSONRepresentable {
    convenience init?(json: Any) {
        guard let colourArray = json as? [CGFloat] else {
            print("json was not an array of CGFloats")
            return nil
        }

        self.init(red: colourArray[0],
                  green: colourArray[1],
                  blue: colourArray[2],
                  alpha: colourArray[3])
    }
}

Estou recebendo este erro:Initializer requirement 'init(json:)' can only be satisfied by a required initializer in the definition of non-final class 'UIColor'. Se eu adicionar umrequired palavra-chave, recebo este erro'required' initializer must be declared directly in class 'UIColor' (not in an extension). Existe uma razão e alguma maneira de contornar isso?

Editar: Só para ficar claro, aqui está o protocolo

protocol JSONRepresentable {
    init?(json: Any)
}

questionAnswers(2)

yourAnswerToTheQuestion