У меня есть файл json, который анализируется с помощью JSONDecoder (). Однако я получаю переменную метку времени типа Date в формате iso-8601 («гггг-мм-дд'т'чч: мм: сс.SSSXXXXX»), но, на мой взгляд, я хочу отобразить ее в произвольном формате: "дд / мм / гг чч: мм: сс".
Я написал следующий код, но получаю ноль для метки времени, и, кроме того, я предполагаю, что «дата» не является правильным типом, который следует использовать, когда метка времени имеет формат iso-8601:
Ошибка json: typeMismatch (Swift.Double,
Swift.DecodingError.Context (codingPath: [_JSONKey (stringValue: "Index
0 ", intValue: 0), CodingKeys (stringValue:" отметка времени ", intValue:
nil)], debugDescription: "Ожидается декодировать Double, но найден
строка / данные вместо. ", underError: nil))
swift4
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
}
}