使用Swift Decode协议格式化日期

问题描述 投票:-1回答:1

我试图通过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”所以我可以看到格式与格式化程序中的预期格式匹配。我看不出这里有什么问题?

json swift4 alamofire decode
1个回答
-1
投票

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

现在工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.