В настоящее время я использую UserDefaults для кодирования информации профиля пользователя, вошедшего в систему. Согласно правилам UserDefaults, я не могу закодировать новый тип данных Firestore "Timestamp". Когда я запускаю код для установки UserDefaults, я получаю сообщение об ошибке:
** User Defaults] Попытка установить объект списка не-свойств в качестве значения NSUserDefaults / CFPreferences для ключа currentUser **
Это моя реализация для UserDefaults с использованием пакета "CodableFirebase"
static func setCurrent(_ user: User, writeToUserDefaults: Bool = false) {
if writeToUserDefaults {
if let data = try? FirestoreEncoder().encode(user) {
print("Encoded Data")
UserDefaults.standard.set(data, forKey: Constants.UserDefaults.currentUser)
}
}
_current = user
}
Сбой происходит в строке 5 из-за поля "join_date", которое имеет тип Timestamp. Я могу подтвердить это, потому что если я удалю поле "join_date" (тип Timestamp) из моей модели User, кодировка будет работать.
Я уже экспериментировал с CodableFirebase в качестве обходного пути, но не могу найти, как кодировать специальные типы Firestore. Любая помощь будет оценена.