我正在尝试从 Firestore 数据库中获取数据,但有时 created_at 为零它会使应用程序崩溃 对于其他类型,例如 String 类型,我可以将其设置为空,但对于时间戳,我不知道如何在任何帮助下处理它,谢谢!
COLLECTION_TM_TRANSITIONS_UAT
.whereField("sender_name", isEqualTo: username)
// .order(by: "created_at", descending: true)
.addSnapshotListener { documentSnapshot, error in
if error == nil {
guard let value = documentSnapshot?.documents else { return }
self.tmTransitions += value.map { (queryDocumentSnapshot) -> TmTransition in
let data = queryDocumentSnapshot.data()
let email = data["email"] as? String ?? ""
let is_sender = data["is_sender"] as? Bool ?? false
let point = data["point"] as? Int ?? 0
let username = data["username"] as? String ?? ""
let sender_id = data["sender_id"] as? String ?? ""
let receiver_id = data["receiver_id"] as? String ?? ""
let created_at = data["created_at"] as? Timestamp
let sender_name = data["sender_name"] as? String ?? ""
let receiver_name = data["receiver_name"] as? String ?? ""
// print("sender_name : \(sender_name)")
// print("created_at : \(created_at)")
//
//
// let date: Date = created_at!.dateValue()
// formatter2.dateFormat = "MM-dd-yyyy HH:mm"
// let createdDate = formatter2.string(from: date)
return TmTransition(id: queryDocumentSnapshot.documentID, sender_id: sender_id, receiver_id: receiver_id, username: username, is_sender: is_sender, point: point, email: email,created_at: created_at,sender_name: sender_name,receiver_name: receiver_name)
}
}
答案 0 :(得分:0)
或者使用 guard
并使用 datevalue()
:
guard let created_at = data["created_at"] as? Timestamp else {
print("Cannot cast timestamp")
return
}
// Then use:
print("Document date: " + created_at.dateValue())