title: Initializer requirement 'init(json:)' can only be satisfied by a `required` initializer in the definition of non-final class 'UIColor'
body: <p>I'm trying to write an extension to satisfy a protocol in an extension like so:</p>
  <pre><code>extension UIColor: JSONRepresentable {
      convenience init?(json: Any) {
          guard let colourArray = json as? [CGFloat] else {
              print(&quot;json was not an array of CGFloats&quot;)
              return nil
          }
      
          self.init(
              red: colourArray[0],
              green: colourArray[1],
              blue: colourArray[2],
              alpha: colourArray[3]
          )
      }
  }
  </code></pre>
  <p>I'm getting this error:</p>
  <pre><code>Initializer requirement 'init(json:)' can only be satisfied by a required initializer in the definition of non-final class 'UIColor'.
  </code></pre>
  <p>If I add a <code>required</code> keyword, I get this error</p>
  <pre><code>'required' initializer must be declared directly in class 'UIColor' (not in an extension).
  </code></pre>
  <p>Is there a reason for this or any way to work around it?</p>
  <p><strong>Edit:</strong> Just to be clear, here's the protocol</p>
  <pre><code>protocol JSONRepresentable {
      init?(json: Any)
  }
  </code></pre>