title: Decoding an Array with Swift4 Codable
body: <p>I'm playing around with Swift 4 Codable again and just when I think I have the hang of it, I get this issue with decoding the Weather key from the response.  </p>
  
  <pre><code> let jsonData = """
      {"coord":{"lon":-113,"lat":35},
  "weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],
  "base":"stations",
  "main":{"temp":291.15,"pressure":1022,"humidity":72,"temp_min":291.15,"temp_max":291.15},
  "visibility":16093,"wind":{"speed":3.6,"deg":200},
  "clouds":{"all":1},
  "dt":1503294780,"sys":{"type":1,"id":321,"message":0.184,"country":"US","sunrise":1503320222,"sunset":1503367937},
  "id":5308281,"name":"Paulden","cod":200}
  """
  </code></pre>
  
  <p>Swift Models:</p>
  
  <pre><code>//Top Level Container
  struct Response: Codable {
  
      enum ResponseKeys: String, CodingKey {
          case name
          case code = "cod"
          case main
          case weather
      }
      //Nested Level Keys: Response &gt; Weather
      enum WeatherKeys: String, CodingKey {
          case weather
      }
      //Nested Level Keys: Response &gt; Main
      enum MainKeys: String, CodingKey {
          case temp
          case pressure
          case humidity
          case tempMin = "temp_min"
          case tempMax = "temp_max"
      }
      //Properties
      var name: String
      var code: Int
      var temp: Double
      var pressure: Int
      var weather:[WeatherObj]
  
      //Custom Init
      init(from decoder: Decoder) throws {
          let container = try decoder.container(keyedBy: ResponseKeys.self)
          let weatherContainer = try container.nestedContainer(keyedBy: WeatherKeys.self, forKey: .weather)
          let mainContainer = try container.nestedContainer(keyedBy: MainKeys.self, forKey: .main)
          self.name = try container.decode(String.self, forKey: .name)
          self.code = try container.decode(Int.self, forKey: .code)
          self.pressure = try mainContainer.decode(Int.self, forKey: .pressure)
          self.temp = try mainContainer.decode(Double.self, forKey: .temp)
  
          // Here is where it throws: the data couldn’t be read because it isn’t in the correct format
          self.weather = try weatherContainer.decode([WeatherObj].self, forKey: .weather)
      }
  }
  </code></pre>
  
  <p>I'm not sure what I'm not doing correctly. Everything else decodes into my model perfectly. It's only when I try to decode an Array. Any suggestions?</p>