JSONDecoder() を使用して解析されている json ファイルがあります。ただし、日付型の変数タイムスタンプを iso-8601 形式 ("yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX") で受け取りますが、私の見解では、それをカスタム形式で表示したいと考えています。 「dd/mm/yy HH:mm:ss」。
私は次のコードを書きましたが、タイムスタンプに nil を取得し、さらに、タイムスタンプが iso-8601 形式の場合、「日付」は使用する正しい型ではないと想定しています。
エラー json: typeMismatch(Swift.Double, Swift.DecodingError.Context(codingPath: [_JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "timestamp", intValue: nil)], debugDescription: "Expected Double をデコードしますが、代わりに文字列/データが見つかりました。"、基本的なエラー: nil))
スウィフト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
}
}