gpt4 book ai didi

ios - 如何从 Firebase 的 iOS API 获取服务器时间戳?

转载 作者:技术小花猫 更新时间:2023-10-29 10:06:34 28 4
gpt4 key购买 nike

我有一个使用 Firebase 的 iOS 应用程序,目前有一些字典的键是 NSDate 对象。一个明显的问题是 NSDate 从设备的系统时间中提取,这不是通用的。

那么,使用 Firebase 的 iOS API 获取服务器时间戳(类似于 Web API 的 Firebase.ServerValue.TIMESTAMP)以便我可以按时间顺序对字典键进行排序的最佳方法是什么?

我也知道 childByAutoID 生成的 ID 的时间顺序性质,但我想不出在代码中对这些 ID 进行排序的正确方法。虽然它们可能按时间顺序返回,但只要对它们调用 allKeys 之类的东西,顺序就会消失。

如果您对此问题有任何帮助,我们将不胜感激!

最佳答案

更新:在 Firebase 3.0 + Swift 中,您可以使用FIRServerValue.timestamp()。在 Objective-C 中,这是 [FIRServerValue timestamp]

在 Swift 中,您现在可以将 FirebaseServerValue.timestamp() 与 Firebase 2.0.3+(3.0 之前)一起使用。

iOS 中 Firebase.ServerValue.TIMESTAMP 的等效项是 kFirebaseServerValueTimestamp。现在,这只适用于 Objective-C 而不是 Swift。

在 Swift 中,您可以使用

创建自己的全局时间戳
let kFirebaseServerValueTimestamp = [".sv":"timestamp"]

然后您将能够以相同的方式使用kFirebaseServerValueTimestamp

但是你只能把它作为一个节点的值或者优先级。您将无法将其设置为键名(尽管我认为您也不能在 Web API 中设置)。

一般来说,在字典上调用allKeys does not guarantee order.但是,如果您在节点上使用 childByAutoID,则可以通过按字典顺序对 allKeys 返回的 NSArray 进行排序来恢复正确的顺序。这样的事情会起作用:

[ref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
NSDictionary *value = snapshot.value;
NSLog(@"Unsorted allKeys: %@", value.allKeys);
NSArray *sortedAllKeys = [value.allKeys sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"Sorted allKeys: %@", sortedArray);
}];

这类似于对 NSArray alphabetically 进行排序,但是在对自动生成的 ID 进行排序时,您想要本地化或不区分大小写的排序,因此您使用 compare: 而不是 localizedCaseInsensitiveCompare:

关于ios - 如何从 Firebase 的 iOS API 获取服务器时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536547/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com