我有一个使用 JSONDecoder() 解析的 json 文件。但是,我收到了日期类型为 iso-8601 格式的变量时间戳(“yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX”),但在我看来,我想以自定义格式显示它: “dd/mm/yy HH:mm:ss”。
我已经编写了以下代码,但时间戳为零,此外,我假设“日期”不是在时间戳采用 iso-8601 格式时使用的正确类型:
错误 json: typeMismatch(Swift.Double, Swift.DecodingError.Context(codingPath: [_JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "timestamp", intValue: nil)], debugDescription: "Expected解码 Double 但找到了一个字符串/数据。”,基础错误:无))
斯威夫特4
import UIKit
enum Type : String, Codable {
case organizational, planning
}
// structure from json file
struct News: Codable{
let type: Type
let timestamp: Date //comes in json with ISO-8601-format
let title: String
let message: String
enum CodingKeys: String, CodingKey { case type, timestamp, title, message}
let dateFormatter : DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "dd/MM/yy HH:mm:ss" // change format ISO-8601 to dd/MM/yy HH:mm:ss
return formatter
}()
var dateString : String {
return dateFormatter.string(from:timestamp) // take timestamp variable of type date and make it a string -> lable.text
}
}