I am using Swift 4 to decode some JSON from Twitter:
struct Tweet: Codable {
let id: String
let createdAt: Date
let text: String
enum CodingKeys: String, CodingKey {
case id = "id_str"
case createdAt = "created_at"
case text
}
}
let decoder = JSONDecoder()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "eee MMM dd HH:mm:ss ZZZZ yyyy"
decoder.dateDecodingStrategy = .formatted(dateFormatter)
let tweets = try decoder.decode([Tweet].self, from: data!)
How can I make it so my code doesn't have to keep remembering to set decoder.dateDecodingStrategy
. Ideally the Tweet
struct would be aware of its date format with a dateFormatter
constant static member variable initialised to the correct format.
I imagine I need to use init(decoder: Decoder)
somehow on Tweet
but I am not sure how.