1

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
    }
}
4

1 に答える 1