Как установить тип Firestore Timestamp в UserDefaults Swift - PullRequest
0 голосов
/ 03 сентября 2018

В настоящее время я использую 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. Любая помощь будет оценена.

...