【发布时间】:2020-08-24 07:52:40
【问题描述】:
我有 2 种来自 api 的日期。我需要一起解码。但我没有找到任何解决方案。我需要在这段代码中添加"yyyy-MM-dd'T'HH:mm:ssZ" 格式。我该怎么做?
func run<T: Decodable>(_ request: URLRequest, _ decoder: JSONDecoder = JSONDecoder()) -> AnyPublisher<Response<T>, Error> {
return URLSession.shared
.dataTaskPublisher(for: request)
.receive(on: DispatchQueue.main)
.tryMap { result -> Response<T> in
self.dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
decoder.dateDecodingStrategy = .formatted(self.dateFormatter)
let value = try decoder.decode(T.self, from: result.data)
return Response(value: value, response: result.response)
}
.eraseToAnyPublisher()
}
【问题讨论】:
-
您能否澄清一下何时需要使用 format1 以及何时需要使用 format2?在同一个 JSON 中?在不同的?您是否确切知道它们在哪里使用,或者如果成功,您是否必须尝试?根据这一点,答案会有所不同。
-
func run为我的所有项目工作。但只有一种不同的 json 结果(不同的结构)返回不同的时间格式。我不想为一个结果添加更多功能。 -
视情况而定。你有参数
JSONDecoder = JSONDecoder(),我会把参数和它的dateFormatter放在这里,不会在trypMap()中覆盖它,或者只是在你的方法中添加一个DateFormatter参数。 -
我可以把它放在哪里?当我不把它放在这里时,这个日期的json返回空白。
-
各种可能的想法:pastebin.com/sZse166b
标签: swift request combine dateformatter