我有一個 @State var tripDate = Date()
我想添加到 firestore db
func addData(tripDate: Date) {
// Get a reference to the database
let db = Firestore.firestore()
// Add a document to a collection
db.collection("tripDate":tripDate]) { error in
// Check for errors
if error == nil {
// No errors
// Call get data to retrieve latest data
self.getData()
}
else {
// Handle the error
}
}
}
并從firestore獲取資料
func getData() {
// Get a reference to the database
let db = Firestore.firestore()
// Read the documents at a specific path
db.collection("Event").getDocuments { snapshot, error in
// Check for errors
if error == nil {
// No errors
if let snapshot = snapshot {
// Update the list property in the main thread
DispatchQueue.main.async {
// Get all the documents and create Todos
self.list = snapshot.documents.map { d in
// Create a Todo item for each document returned
return Event(id: d.documentID,
tripDate: d["tripDate"] as! Date,
)
}
}
}
}
else {
// Handle the error
}
}
}
這是要添加的按鈕
Button(action: {
Eventmodel.addData(tripDate: tripDate)
}) {
Text("Submit")
}
知道如何將這些情況下的日期轉換為時間戳(在這些函式中),因為 Firestore 不采用 Date 它而是采用時間戳,以防我仍然將其作為日期,發生致命錯誤并且應用程式崩潰并凍結,任何想法非常感謝你!
uj5u.com熱心網友回復:
您可以Date使用其timeIntervalSince1970屬性轉換為時間戳。如果您使用的 API 支持浮點數,您可以按原樣使用它,或者將其轉換為String. 另一種方法是使用DateFormatter.
uj5u.com熱心網友回復:
看起來 Swift Firebase 庫有一個帶有初始化器的類Timestamp,該初始化器采用Date:
convenience init(date: Date)
并具有將 a 轉換Timestamp為 a的功能Date:
func dateValue() -> Date
您還可以從 Date 手動計算秒和納秒。這可能看起來像這樣:
extension Date {
var secondsAndNanoseconds: (seconds: Int, nanoseconds: Int) {
let result = timeIntervalSince1970
let seconds = Int(result)
return (seconds, Int(1000000000 * (result-Double(seconds))))
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/438919.html
上一篇:當我們在SwiftUI中標記串列項時,如何將串列項移動到頂部?
下一篇:在swiftui視圖中更改布林值
