2017-04-06 89 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