更新:在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。
在斯威夫特,你可以用
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:
找到這個小工具 - https://github.com/freak4pc/NSDate-ServerDate - 但它如果Firebase爲此提供某種解決方案,我們仍然很高興。 – 2014-08-27 21:33:52