2015-06-17 26 views
4

"Offline Capabilities" section of the iOS guide中提到了kFirebaseServerValueTimestamp,它似乎在Swift項目中不起作用(自動完成不會提示它)。如何在Swift項目中使用iOS SDK插入Firebase服務器時間戳

我試過[".sv": "timestamp"]作爲Swift的例子。但它抱怨說,這不能用其他值設置,並且必須是給定路徑上的唯一值。

我想要做的是保存createdAt時間戳以及對象的其他值。而且我寧願使用服務器時間來避免客戶端時鐘歪斜。

我該怎麼做?

+0

你能添加一些代碼的例子嗎? –

+0

沒什麼特別。我試過 'ref.childByAutoId()。setValue([「text」:「foobar」,「.sv」:「timestamp」],withCompletionBlock:{...}'它給了我錯誤信息「.sv」不能用其他值保存 –

+0

你可以嘗試只設置.sv的值,並使用{}而不是[]?或者可以把它放在自定義的變量中而不是.sv? –

回答

10

將括號內的".sv":"timestamp"添加到您的Firebase條目中時,在括號內添加[ ]

如:

let objectToSave: Dictionary <String: AnyObject> = ["date": [".sv": "timestamp"], "key1": "value1", "key2": 1234.....] 

Code screenshot

應該寫入您的火力地堡爲:

date: 1463329843759 

Firebase screenshot

+0

文檔中引用了哪裏? –

+0

它在舊的(www.firebase.com)文檔中引用 –

+0

謝謝 - 這是非常有用的 - 他們應該將其添加回 –

2

由於火力地堡4.0,你可以用ServerValue.timestamp( )

例如:

let ref = Database.database().reference().child("userExample") 
    let values = ["firstName": "Joe", "lastName": "Bloggs", "timestamp": ServerValue.timestamp()] as [String : Any] 

    ref.updateChildValues(values) { (err, ref) in 

     if let err = err { 
      print("failed to upload user data", err) 
      return 
     } 

    } 
相關問題