Я использую библиотеку CodableFirebase для декодирования и кодирования данных при работе с Google Firestore.Это прекрасно работает, за исключением случаев, когда значение не определено в базе данных, но является свойством класса.Мне интересно, как вы определяете класс так, чтобы когда моментальный снимок возвращался из Firebase, он не изменял значение nil.
Вот простой пример того, что происходит .. Это было бы моим определением класса.
class TimeThing: Codable {
var requestedTime: Double?
var createdTime: Double?
init(
requestedTime: Double? = 0,
createdTime: Double? = 0
) {
self.requestedTime = requestedTime
self.createdTime = createdTime
}}
И это будет ошибкой, которая выдается.В этом случае созданное время имеет значение в Firestore, а значение «запрашиваемого времени» - нет.
Тема 1: Неустранимая ошибка: 'try!'В выражении неожиданно возникла ошибка: Swift.DecodingError.typeMismatch (Swift.Double, Swift.DecodingError.Context (codingPath: [CodingKeys (stringValue: «requiredTime», intValue: nil)], debugDescription: «Ожидается декодировать Double, но найдена строка/ data вместо. ", underError: nil))
Я понимаю, что упускаю что-то фундаментальное, но, к сожалению, я просто не уверен, что это такое.Что мне нужно сделать с моим классом, чтобы установить значения по умолчанию, которые не взорвут мой блок try при получении значения nil из Firestore?
Спасибо!