Model 不能';t使用UUID()解析Json名称

Model 不能';t使用UUID()解析Json名称,model,uuid,swiftui,codable,swift5,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文件,其中有许多重复的数组,具有不同的数据

我有下一个解析模型

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 ""
我犯了什么错误,请告诉我

我已经看过很多答案了,但我不明白我到底错在哪里

尝试


错误的原因是,通过确认
Codable
协议,它试图合成值,当您添加一个不存在的值时,解码器会感到困惑。要解决这个问题,您只需将
CodingKeys
enum添加到结构中

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

}
var uuid = UUID (). uuidString
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"
    }

}