更新:在 Firebase 3.0 + Swift 中,您可以使用
FIRServerValue.timestamp()。在 Objective-C 中,这是[FIRServerValue timestamp]。
在 Swift 中,您现在可以在 Firebase 2.0.3+(3.0 之前)中使用 FirebaseServerValue.timestamp()。
Firebase.ServerValue.TIMESTAMP 在 iOS 中的等价物是 kFirebaseServerValueTimestamp。目前,这只适用于 Objective-C 而不是 Swift。
在 Swift 中,您可以使用
创建自己的全局时间戳
let kFirebaseServerValueTimestamp = [".sv":"timestamp"]
然后你就可以用同样的方式使用kFirebaseServerValueTimestamp了。
但你只能将它用作节点的值或优先级。您将无法将其设置为密钥名称(尽管我不相信您也可以在 Web API 中)。
通常,在字典 does not guarantee order. 上调用 allKeys 但如果您在节点上使用 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: