如何将Firebase字典列出到UILabel Swift中

问题描述 投票:1回答:1

我正在开发比萨订单应用。我正在尝试将订单作为列表加载到UILabel中。订单数据库为Firebase,应用程序为快速编码。当我打印数组的值时,我可以看到所有项目。但是项目列表无法加载到UILabel中。只需在顶部通过autoID加载子项,而忽略其他任何子项。非常感谢您的帮助,这是我在swift和firebase上的第一个应用程序,也许这是一个愚蠢的问题:(

This is the Firebase childs by autoID. Only the one on the top can be loaded

如果我打印值可以很好地工作,但是UILabel仅显示最后一项。

func observePreOrder() {
    guard let uid = Auth.auth().currentUser?.uid else { return }
    let preOrderRef = Database.database().reference(withPath: "users/profile/\(uid)/pedidos/100_PRE-ORDER/")

    preOrderRef.observe( .value, with: {snapshot in

        if let Pedido = snapshot.value as? NSDictionary {

            let keys = Pedido.allKeys
            for key in keys {

                if let nextDict = Pedido[key] as? [String: Any] {

                    let Pizza = nextDict["PIZZA"] as? String ?? ""
                    let Ingredientes = nextDict["INGREDIENTES"] as? String ?? ""
                    let separator = " \n"
                    let array : [String?] = ["·Producto: \(Pizza)", nil, "·Ingredientes: \(Ingredientes)"]
                    let PedidoSTR = array.compactMap{ $0 }.joined(separator: separator)


                    self.testLabel.text = PedidoSTR// only display last item from Firebase
                    print(PedidoSTR)// Display ALL items from Firebase 
                    self.view.layoutIfNeeded()
                    self.testLabel.setNeedsDisplay()
                    self.testLabel.layoutIfNeeded()
                    print(self.testLabel.text as Any)



                }

            }

        } else {
            print("NANAIN")
        }
    })

}

这是输出值

·产品:百事可乐可乐·成分:·产品:Mitad Ali oli👨🏻‍🍳和MitadBoloñesa👨🏻Pequeña。成分:米塔德肉酱+托马斯奶酪+莫扎里拉奶酪+萨尔萨·阿里奥利+皮米恩托·弗里托+贾蒙·塞拉诺+克丽玛·莫迪纳和米塔恩奶酪+托米塔奶酪+莫扎里拉奶酪+萨尔萨博洛尼萨奶酪+特纳拉+切博拉奶酪+特德奎索奶酪

swift list dictionary firebase-realtime-database uilabel
1个回答
0
投票

我还有更多问题所在

    func observePreOrder() {
    guard let uid = Auth.auth().currentUser?.uid else { return }
    let preOrderRef = Database.database().reference(withPath: "users/profile/\(uid)/pedidos/100_PRE-ORDER/")

    preOrderRef.observe( .value, with: {snapshot in

        if let Pedido = snapshot.value as? NSDictionary { // "\(Pedido)"load all items on UILabel👍🏻

            let keys = Pedido.allKeys // "\(keys)"load all keys on UILabel👍🏻
            for key in keys {  // "\(key)"load only last key on UILabel but all keys on print output🤨

                if let nextDict = Pedido[key] as? [String: Any] { // "\(nextDict)"Load only last item on UILabel but all items on print output😩

                    let Pizza = nextDict["PIZZA"] as? String ?? ""
                    let Ingredientes = nextDict["INGREDIENTES"] as? String ?? ""
                    let separator = " \n"
                    let array : [String?] = ["·Producto: \(Pizza)", nil, "·Ingredientes: \(Ingredientes)"]
                    let PedidoSTR = array.compactMap{ $0 }.joined(separator: separator)


                    self.testLabel.text = "\(nextDict)"
                    self.orderTitle = self.testLabel.text

                    self.view.layoutIfNeeded()
                    self.testLabel.numberOfLines = 0
                    self.testLabel.setNeedsDisplay()
                    self.testLabel.layoutIfNeeded()
                    print(self.testLabel.text as Any)
                    print(array.count as Int)



                }

            }

        } else {
            print("NANAIN")
        }
    })

}
© www.soinside.com 2019 - 2024. All rights reserved.