Не удалось разобрать имя Json с помощью UUID () - PullRequest
0 голосов
/ 28 октября 2019

у меня следующая модель для разбора

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, в котором есть много повторяющихся массивов с разными наборами данных, но с одинаковыми заголовками и иногда повторяющимися идентификаторами

Я хочу использовать

var uuid = UUID() 

для генерации уникального идентификатора для каждого набора данных и использовать функцию уникального идентификатора

list (model, id: \ .uuid)

, но когда я добавляю эту строку, я получаю ошибку

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

в чем я ошибся, скажите, пожалуйста

Я уже просмотрел много ответов, но не могу понять, в чем именно заключается моя ошибка.

пробовал

var uuid: UUID = UUID ()

и

var uuid = UUID (). uuidString

1 Ответ

1 голос
/ 28 октября 2019

Причина вашей ошибки в том, что, подтверждая протокол 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"
    }

}
...