2015-06-17 54 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 
     } 

    } 
相关问题