Firebase获取子节点ID,Swift iOS

10
我的Firebase看起来像这样。在Active_Orders下面,会出现不同名称的childs,这取决于它们的UID(用户ID)。

这是我获取子元素ID的代码,无论名称如何。但它似乎根本没有起作用。有什么正确的方法来获取子元素ID?谢谢。
databaseRef.child("Active_Orders").observeEventType(FIRDataEventType.Value, withBlock: {
                    snapshot in
                //Get customerUID
                let customerUID = snapshot.value!.objectForKey("username") as! String
                self.setText("customerUID", value: customerUID)

请提供您的最小但足够的JSON树形结构,不要只提供代码片段,而是以文本形式呈现。 - Dravidian
我想确保我理解了这个问题:在这种情况下,您希望customerUID等于"ZDitJoAnqES6PPO3teK0EDQnGXJ2",是吗? - Ryan
不,我想打印出“Active_Orders->Child”的名称/ID。 - Victor
当你说孩子的名字时,你是指像“ZDitJoAnqES6PPO3teK0EDQnGXJ2”这样的名称是这张图片中孩子的名字吗? - Ryan
是的,那是正确的。 - Victor
显示剩余3条评论
2个回答

20

从你的问题中很难确定你正在做什么,但这个能否给你所需的列表?

databaseRef.child("Active_Orders").observeEventOfType(.Value, withBlock: { (snapshot) in 
    if let result = snapshot.children.allObjects as? [FIRDataSnapshot] {
        for child in result {
            var orderID = child.key as! String
            print(orderID)
        }
    }
})

我认为这个代码块应该遍历“Active_Orders”中的所有子元素并打印它们的键值(这似乎是您试图打印的内容)。


很高兴能够帮助! - Ryan

3

针对Swift 3和Firebase 4

let ref = Database.database().reference()   

ref.child("Active_orders").observe(.value, with: { snapshot in

    if !snapshot.exists() {return} //may want to add better error handling here.

    let info = snapshot.value as! NSDictionary

    print("info keys are:", info.allKeys)
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接