如何在Swift项目中使用iOS SDK插入firebase服务器时间戳

Qua*_*ing 5 ios firebase swift firebase-realtime-database

iOS指南"脱机功能"部分中,它提到了kFirebaseServerValueTimestamp,这似乎不适用于Swift项目(自动完成不会提示它).

我尝试[".sv": "timestamp"]过Swift示例.但它抱怨说这不能用其他值设置,并且必须是给定路径的唯一值.

我试过了:

ref.childByAutoId().setValue(["text": "foobar", ".sv": "timestamp"], withCompletionBlock: {...} 
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误,".sv"无法与其他值一起保存.

我想要做的是保存createdAt时间戳以及对象的其他值.而且我更喜欢使用服务器时间来避免客户端时钟偏差.

我怎样才能做到这一点?

小智 10

将其添加到条目时添加".sv":"timestamp"括号之间.[ ]Firebase

例如:

let objectToSave: Dictionary <String: AnyObject> = ["date": [".sv": "timestamp"], "key1": "value1", "key2": 1234.....] 
Run Code Online (Sandbox Code Playgroud)

代码截图

它应该写在您的Firebase中:

date: 1463329843759
Run Code Online (Sandbox Code Playgroud)

Firebase截图


Edw*_*ard 6

从 Firebase 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
        }

    }
Run Code Online (Sandbox Code Playgroud)