У меня есть база данных firestore «sales», в которой есть один столбец с именем saleapproveddate
. Есть 2 уровня людей, один из которых регистрирует продажи, а другой утверждает журналы продаж. Во время регистрации продажи я сохраняю saleapproveddate
как NSNull()
(который сохраняется как nil
в поле базы данных Firestore). Утверждающий может обновить saleapproveddate
как TimeStamp
, но если утверждающий никогда не одобрит журнал продаж, он останется как nil
в поле БД пожарного депо. Таким образом, он может иметь тип nil
или TimeStamp
.
У меня есть модель Продажи
class Sale {
var saleapprovedate : Any?
}
Когда я загружал данные из пожарного магазина, я пытался снизить saleapprovedate
до Любого
let approvedDate = document[SaleProperties.paidDate.rawValue] as Any
Но настоящая проблема в том, что saleapprovedate
может иметь либо nil
, либо Timestamp
. Как проверить условие типа, преобразовать в определенный тип и отобразить в метке?
Ниже я попробовал:
While loading data:
sale.saleapprovedate = document[SaleProperties.saleapprovedate.rawValue] as Any
while displaying data:
let saleItem = sales[indexPath.row]
let paidDate = saleItem.saleapprovedate
if paidDate == nil {
cell.paidDateLabelContainer.text = "Yet to pay"
cell.paidStatusImageView.isHidden = true
}
else {
let paidDateTimeStamp = saleItem.saleapprovedate as! Timestamp
let convertedPaidDate = self.convertTimestampToDate(timeStamp: paidDateTimeStamp)
cell.paidDateLabelContainer.text = convertDateToString(date: convertedPaidDate)
cell.paidStatusImageView.isHidden = false
}
Но приведенный выше код не обновляет метку ячейки должным образом. У меня есть два данных, один имеет saleapprovedate
как Timestamp
, а другой как nil
. Обе метки ячейки отображаются как «Еще не заплатили». Что не так?