无法使用UUID()解析Json名称

时间:2019-10-28 15:02:05

标签: model uuid swiftui codable swift5

我有下一个模型进行解析

struct Unicards: Hashable, Codable, Identifiable {
var id: String?
var title: String?
var info: String?
var brand: String?
var model: String?
var make_year: Int?
var message: String?
var message_color: String?

我有一个Json文件,其中有许多重复的数组,这些重复的数组具有不同的数据集,但是具有相同的标头和有时重复的ID

我要使用

var uuid = UUID() 

为每个数据集生成唯一的ID,并使用唯一的ID函数

list (model, id: \ .uuid)

但是当我添加这一行时,我得到一个错误

   "Thread 1: Fatal error: Couldn't parse" Json name ""

我弄错了,请告诉我

我已经浏览了许多答案,但我不明白我的错误到底是什么。

尝试

var uuid: UUID = UUID ()

var uuid = UUID (). uuidString

1 个答案:

答案 0 :(得分:1)

发生错误的原因是,通过确认Codable协议,它试图合成这些值,并且当您添加一个不存在的值时,解码器会变得混乱。要解决此问题,您需要做的就是向您的结构中添加一个CodingKeys枚举。

struct Unicards: Hashable, Codable, Identifiable {

    var uuid: UUID = UUID()

    var id: String?
    var title: String?
    var info: String?
    var brand: String?
    var model: String?
    var make_year: Int?           // by convention this should be makeYear
    var message: String?
    var message_color: String?    // by convention this should be messageColor

    enum CodingKeys: String, CodingKey {
        case id
        case title
        case info
        case brand
        case model
        case message
        case make_year
        case message_color

        // if you use the usual naming convention, you could swap these out
        // case makeYear = "make_year",
        // case messageColor = "message_color"
    }

}