title: Type 'X' does not conform to protocol 'Encodable'
body: <p>I am hoping here to get an understanding of this error and perhaps a broader understanding of encodable and decodable. 
  Part of my class looks as follows:</p>
  
  <pre><code>  public var eventId: String?
    public var eventName: String?
    public var eventDescription: String?
    public var location: CLLocation?
  
    /// These properties will be encoded/decoded from JSON
    private enum CodingKeys: String, CodingKey {
      case eventId
      case eventName
      case eventDescription
      case location
    }
  
    public required convenience init(from decoder: Decoder) throws {
      let container = try decoder.container(keyedBy: CodingKeys.self)
  
      let eventId = try container.decode(String?.self, forKey: .eventId)
      let eventName = try container.decode(String?.self, forKey: .eventName)
      let location = try container.decode(CLLocation?.self, forKey: .location)
      self.init(eventId: eventId, eventName: eventName, location:location)
    }
  </code></pre>
  
  <p>This class works perfectly, until I add location. When I do I get two errors: Type 'CAEvent' does not conform to protocol 'Encodable', and 'Reference to member 'location' cannot be resolved without a contextual type' inside the fromDecoder method. 
  Could someone explain the issue?</p>