2017-04-06 100 views
1

当我通过一个火力点快照,重复与示例代码是这样的:火力地堡快照迭代顺序

var ref = Firebase(url:MY_FIREBASE_URL) 
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in 
    for rest in snapshot.children.allObjects as [FDataSnapshot] { 
     println(rest.value)  
    } 
}) 

有没有办法保证迭代会在创作的子节点的顺序?

+0

'snapshot.children'按照您从数据库请求孩子的顺序。要指定特定顺序,请使用'queryOrderedByKey','queryOrderedByValue'或'queryOrderedByChild'。有关订购的信息,请参阅Firebase文档:https://firebase.google.com/docs/database/ios/lists-of-data#sort_data –

+0

您是否认为uid是按字母顺序创建的?如果是这样,我可以订购UID? – Kashif

+0

我不确定你在这里使用UID的意思。数据库结果可以通过它们的键,它们的值或孩子的值来排序。 –

回答

1

为了保证孩子的顺序,请在生成Firebase数据库位置的新孩子时使用.childByAutoId。作为参考状态,该键以时间戳为前缀。然后如Frank所说,您可以使用queryOrderedByKey指定特定的顺序。由于孩子们是有时间戳的,所以这个顺序就是创造的顺序。

+0

不幸的是,这不是这个firebase数据库的设计方式。每当新的匿名用户登录时,它会将新的user_id添加为子节点。我的问题是,如果我可以按照创建的顺序浏览这些子user_id节点。我没有数据中的时间戳,也没有通过.childByAutoId创建数据 – Kashif