Моя структура данных выглядит так. «люди» — это словарь ключей, значениями которых является словарь человека:
"humans" : {
"abc123" : {
"name" : "Vince",
"pets" : [ {
"animal" : "dog",
"name" : "Clifford"
}, {
"animal" : "fish",
"name" : "Nemo"
} ]
},
"xyz789" : {
"name" : "Jack"
}
}
И поэтому мои структуры Swift выглядят так, чтобы соответствовать этому:
struct Human: Codable {
var name: String!
var pets: [Pet]?
}
struct Pet: Codable {
var name: String!
var animal: Animal!
}
enum Animal: String, Codable {
case cat
case dog
case fish
}
Я пытаюсь декодировать так (используя библиотеку CodableFirebase):
let human = try FirebaseDecoder().decode([Human].self, from: value)
Но я получаю следующую ошибку при попытке кодировать объекты, которые имеют массивы некоторых объектов:
typeMismatch (Swift.Array, Swift.DecodingError.Context (codingPath: [], debugDescription: «Не массив», baseError: nil))
Как я могу правильно кодировать значения словаря в виде массива моих пользовательских объектов Swift?