2017-06-13 57 views

回答

0

這不完全是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) 
} 

希望可以幫助 - 如果需要更多信息,請發表評論。

+0

因此獲得serverstamp的唯一方法是首先將它寫入數據庫,對吧?順便說一句,你的'doTimestamp()'函數不起作用。我用'FUNC createTimestamp(){ \t \t讓timestampRef = self.ref.child( 「時間戳」) \t \t timestampRef.setValue(ServerValue.timestamp()) \t}' – lysov

+0

@lysov什麼不起作用。這是從功能應用程序複製和粘貼的代碼。您必須記住定義kFirebaseServerValueTimestamp,將其寫入節點,然後觸發觀察者,以便讀入和使用時間戳。 – Jay

相關問題