Swift调用API出现dateCorrupted错误,重启APP后问题消失
日期格式引发API响应持续触发dateCorrupted错误的问题
问题现象
- 每次调用API均能收到响应,但始终触发dateCorrupted错误
- 切换标签页重新请求数据仍会报错,仅重启APP可解决问题
背景与补全代码
后端要求的日期格式为"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"(UTC时区),但日期时间选择器生成的日期始终缺失毫秒部分,因此编写了以下Date扩展来补全毫秒:
var postableDate: String { let formatter = DateFormatterPool.backendDateFormatter formatter.timeZone = TimeZone(identifier: "UTC") formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" let millisecondsString = formatter.string(from: self) let nanoseconds = DispatchTime.now().uptimeNanoseconds % 1_000_000 let nanosecondsString = String(format: ".%03d", nanoseconds) return millisecondsString + ".001" + "Z" }
相关模型与请求代码
数据模型
struct Model: Codable { ... var departureTime: Date ... }
请求实现
func getRequest(with requestID: String) async throws -> BaseResponseData<Model> { try await requestFactory.request( with: ApiRouter.getRequest(requestID: requestID), customDecoder: DateDecoder()) }
内容的提问来源于stack exchange,提问作者King
相关产品推荐
相关产品推荐

