使用Swift Decode协议格式化日期

时间:2019-02-14 11:19:29

标签: json swift4 alamofire decode

我正在尝试通过Alamofire从JSON获取日期到Swift 4中的结构。我已经设置了一个与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 :(得分:-1)

结果证明dateDecodingStrategy似乎不喜欢使用我使用的日期格式。我不得不写一个自定义的初始化程序并在那里处理格式。

现在可以正常工作。