Форматирование даты по протоколу Swift Decode - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь получить дату из JSON в структуру в Swift 4 через Alamofire.Я установил форматер даты, который соответствует формату JSON, но я получаю сообщение об ошибке: Date string does not match format expected by formatter

Я использую следующий код:

struct AgentEvent: Decodable {
    let callref: Int?
    let repdate: Date?
    let parked: Bool?
    let company: String?
}

let decoder = JSONDecoder()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
decoder.dateDecodingStrategy = .formatted(dateFormatter)

self.events = try! decoder.decode([AgentEvent].self, from: data!)

Образец JSON (Подтверждено при запускеиспользуется метод в браузере):

{"callref":142,
"company":"Test Company Ltd",
"repdate":"2019-01-25T17:21:00",...

Я остановил код, чтобы точно определить, какие данные я пытаюсь декодировать (если они были переведены куда-то), а формат даты передается иэто: «2019-01-25T17: 21: 00», насколько я вижу, формат соответствует ожидаемому формату в форматере.Я не вижу, что здесь не так?

1 Ответ

0 голосов
/ 14 февраля 2019

Оказывается, что dateDecodingStrategy, похоже, не нравится работать с форматированием даты, которое я использовал.Вместо этого мне пришлось написать собственный инициализатор и обработать форматирование.

Теперь работает нормально.

...