Swift 从 Firestore 数据库错误时间戳获取数据

时间:2021-05-28 05:22:10

标签: swift firebase

我正在尝试从 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)
              
                }
               
            }
              

1 个答案:

答案 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())