我正在开发比萨订单应用。我正在尝试将订单作为列表加载到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。成分:米塔德肉酱+托马斯奶酪+莫扎里拉奶酪+萨尔萨·阿里奥利+皮米恩托·弗里托+贾蒙·塞拉诺+克丽玛·莫迪纳和米塔恩奶酪+托米塔奶酪+莫扎里拉奶酪+萨尔萨博洛尼萨奶酪+特纳拉+切博拉奶酪+特德奎索奶酪
我还有更多问题所在
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")
}
})
}