Понижение от любого до определенного типа - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть база данных 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. Обе метки ячейки отображаются как «Еще не заплатили». Что не так?

1 Ответ

0 голосов
/ 03 ноября 2018
Modal :
var incentivepaiddate : Any?

Array :
var sales : [Sale] = [Sale]()

Loading data from firestore :

for document in querySnapshot!.documents {
let sale = Sale()
sale.incentivepaiddate = document[SaleProperties.incentivepaiddate.rawValue]
self.sales.append(sale)
}

Проверка на ноль, уменьшение до определенного типа и отображение данных в ячейке

let saleItem = sales[indexPath.row]
let paidDate = saleItem.incentivepaiddate

 if let paid = paidDate {

            let paidDateTimeStamp = paid as? Timestamp
            let convertedPaidDate = self.convertTimestampToDate(timeStamp: paidDateTimeStamp!)
            cell.paidDateLabelContainer.text = convertDateToString(date: convertedPaidDate)
        }
        else {
            cell.paidDateLabelContainer.text = "Yet to pay"
            cell.paidStatusImageView.isHidden = true
        }

Надеюсь, это кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...