1
ServerValue.timestamp()
返回[AnyHashable : Any]
。如何將它轉換爲Double
,所以我可以用時間戳創建一個日期。Firebase服務器時間戳爲雙重iOS
ServerValue.timestamp()
返回[AnyHashable : Any]
。如何將它轉換爲Double
,所以我可以用時間戳創建一個日期。Firebase服務器時間戳爲雙重iOS
這不完全是Firebase時間戳的工作方式。
它實際上做的是將時間戳記寫入節點,但直到寫入之後才能訪問該節點。
要訪問它,請將觀察者附加到該節點,以便在寫入時間戳時將其返回到快照中。
所以首先我們定義一個變種
let kFirebaseServerValueTimestamp = [".sv":"timestamp"]
然後附加一個觀察者,所以當時間戳被寫入一個節點,我們得到通知的情況下
func attachObserver() {
let timestampRef = self.ref.child("timestamp")
timestampRef.observe(.value, with: { snapshot in
if snapshot.exists() {
let ts = snapshot.value as! //Int? Double? String?
print(ts)
}
})
}
並寫出函數時間戳,導致上述觀察者接收事件
func doTimestamp() {
let timestampRef = self.ref.child("timestamp")
timestampRef.setValue(kFirebaseServerValueTimestamp)
}
希望可以幫助 - 如果需要更多信息,請發表評論。
因此獲得serverstamp的唯一方法是首先將它寫入數據庫,對吧?順便說一句,你的'doTimestamp()'函數不起作用。我用'FUNC createTimestamp(){ \t \t讓timestampRef = self.ref.child( 「時間戳」) \t \t timestampRef.setValue(ServerValue.timestamp()) \t}' – lysov
@lysov什麼不起作用。這是從功能應用程序複製和粘貼的代碼。您必須記住定義kFirebaseServerValueTimestamp,將其寫入節點,然後觸發觀察者,以便讀入和使用時間戳。 – Jay