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

8
在iOS指南的"离线功能"部分中提到了kFirebaseServerValueTimestamp,但在Swift项目中似乎无法使用(自动完成不会提示)。
我尝试了Swift示例中的 [".sv": "timestamp"] 。 但它抱怨说不能与其他值一起设置,并且必须是给定路径上唯一的值。
我尝试过:
ref.childByAutoId().setValue(["text": "foobar", ".sv": "timestamp"], withCompletionBlock: {...} 

它给了我一个错误,说".sv"不能与其他值一起保存。

我想要做的是将创建时间戳与对象的其他值一起保存。我更喜欢使用服务器时间以避免客户端时钟偏差。

我该如何做到这一点?


你可以尝试仅设置 .sv 值并使用 {} 而不是 [] 吗?或者将其放在自指定变量中而不是 .sv 中? - André Kool
2个回答

10
".sv":"timestamp" 添加到您的 Firebase 条目时,请将其放在方括号 [ ] 中。

例如:

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

代码截图

应该写到你的Firebase中:

date: 1463329843759

Firebase 截图


这在文档中的哪里有提到? - UKDataGeek
谢谢 - 这非常有用 - 他们应该把它加回去 - UKDataGeek
这不起作用,它只是向文档添加一个字符串 [".sv": "timestamp"]。 - NSGodMode
1
NSGodMode,这是来自2016年的内容...当时Firebase甚至还没有被Google收购,而Swift版本最多只有2。 - SATAN

7

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

    }

ServerValue 类是什么?我找不到它。它在 Firebase 框架中吗? - NSGodMode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接