Firebase iOS 查询未按预期排序
Firebase iOS query not ordering as expected
我使用 childByAutoId
保存了我的数据,因此它在 Firebase 中按时间顺序排列。当我使用下面的查询进行查询,然后打印 snapshot.value
时,它按我预期的顺序打印 -- 按时间顺序排列 --,但是当我尝试枚举时snapshot.value
,当我尝试使用 [snap.value allkeys]
获取密钥时,它们不再按时间顺序排列。我已经尝试使用 [self.refMyOrder queryOrderedByKey]
和 [self.refMyOrders queryOrderedByChild:@"timestamp"
,我有一个 child timestamp
是纪元时间的 data-type long
。但是,它仍然没有维持所需的顺序。
我了解 NSDictionary 的底层数据结构不是 有序 数据结构。
我做错了什么?
[self.refMyOrders observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
NSLog(@"snapshot.value = %@", snapshot.value);
NSLog(@"all keys = %@", [snapshot.value allKeys]);
}];
所以,我阅读了 Firebase iOS SDK 附带的 FDataSnapshot.h
头文件,并找到了一种枚举 snapshot
的方法,以便它保持正确的顺序.
[self.refMyOrders observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
for (FDataSnapshot* child in snapshot.children) {
NSLog(@"%@ -> %@", child.value[@"orderID"], child.value[@"timestamp"]);
}
}];
这正是我要找的。我将把这个问题留给未来的用户。我找不到任何东西这么简单。
我使用 childByAutoId
保存了我的数据,因此它在 Firebase 中按时间顺序排列。当我使用下面的查询进行查询,然后打印 snapshot.value
时,它按我预期的顺序打印 -- 按时间顺序排列 --,但是当我尝试枚举时snapshot.value
,当我尝试使用 [snap.value allkeys]
获取密钥时,它们不再按时间顺序排列。我已经尝试使用 [self.refMyOrder queryOrderedByKey]
和 [self.refMyOrders queryOrderedByChild:@"timestamp"
,我有一个 child timestamp
是纪元时间的 data-type long
。但是,它仍然没有维持所需的顺序。
我了解 NSDictionary 的底层数据结构不是 有序 数据结构。
我做错了什么?
[self.refMyOrders observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
NSLog(@"snapshot.value = %@", snapshot.value);
NSLog(@"all keys = %@", [snapshot.value allKeys]);
}];
所以,我阅读了 Firebase iOS SDK 附带的 FDataSnapshot.h
头文件,并找到了一种枚举 snapshot
的方法,以便它保持正确的顺序.
[self.refMyOrders observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
for (FDataSnapshot* child in snapshot.children) {
NSLog(@"%@ -> %@", child.value[@"orderID"], child.value[@"timestamp"]);
}
}];
这正是我要找的。我将把这个问题留给未来的用户。我找不到任何东西这么简单。