Я новый разработчик Swift. Я использую Xcode 10.2 и Swift 4.2.
Я пытаюсь сохранить Firestore Timestamp
в настройках пользователя по умолчанию и получить его. Проблема, с которой я сталкиваюсь - это первый раз, когда я получаю метку времени, она может быть нулевой, поэтому я хотел бы иметь значение по умолчанию. Но я не знаю, как отформатировать какую-либо дату как Firestore Timestamp
, поэтому я могу указать значение по умолчанию от 1 января 2000 года. Я просмотрел документацию FireBase, но не смог найти, как взять читаемую дату и отформатировать ее как метку времени. (кажется, все методы устарели в firebase).
Вот мой код для чтения сохраненной даты с попыткой использовать 1 января 2000 г. по умолчанию, но это не работает:
// Get a reference to a default date of January 1, 2000.
let dateformatter = DateFormatter()
let defaultDate = dateformatter.date(from: "01/01/2000 12:00 AM")
// Get the last date the table was updated.
let lastDateNSData = UserDefaults.standard.object(forKey: Constants.LocalStorage.rateTableTimeStamp) as? Data
let lastDate = NSKeyedUnarchiver.unarchiveObject(with: lastDateNSData ?? Data(Timestamp(date: defaultDate!))) as! Timestamp
Я получаю сообщение об ошибке Data(Timestamp(date: defaultDate!))
, которое говорит 'Timestamp' does not conform to expected type 'Sequence'
Я думаю, это из-за того, как я отформатировал defaultDate
, используя dateformatter
. Но я не знаю другого способа сделать это.
Если это поможет, вот мой код для записи текущей даты в качестве отметки времени по умолчанию:
// Update the timestamp.
let now = Timestamp(date: Date())
let nsNow = NSKeyedArchiver.archivedData(withRootObject: now)
UserDefaults.standard.set(nsNow, forKey: Constants.LocalStorage.rateTableTimeStamp)