我正在尝试保存用户订购的商品并在另一端获取信息,但是在检索数据时它似乎不再是字典,并且我无法从订单中访问商品。
这就是我用来保存数据的
for (i,item) in currentOrder.enumerated().reversed(){
restaurantRef.child("order").child("dish\(i+1)").updateChildValues([
"dishName": item.name,
"dishPrice": item.price,
"dishQuantity": item.quantity,
"servWFood": item.servWithFood
])
} 这是正在发送的内容的 print():
["dishName": "Baked Ricotta and Pancetta Tarts", "servWFood": false, "dishQuantity": 1, "dishPrice": 18.0]
["dishName": "Water", "servWFood": false, "dishQuantity": 1, "dishPrice": 10.0]
数据发送后数据库的外观如下: Database img
这就是我用来检索数据的内容:
let ref = Database.database().reference().child("Restaurants").child(restaurantUid).child("Tables")
ref.observe(.childChanged) { (snapshot) in
if let dictionary = snapshot.value as? [String:AnyObject]{
if let orders = dictionary["order"] as? NSDictionary{
for item in orders{
print("item \(item)")
}
}
}
项目的值为:
item (key: "dish3", value: {
dishName = "Steak and Tomato Panzanella";
dishPrice = 25;
dishQuantity = 1;
servWFood = 0;
})
我想获取这 4 道菜的每一项信息,但一直没能做到。
如果有任何帮助,我将不胜感激!谢谢:)
最佳答案
尝试获取“RestTable1”的订单:
let ref = Database.database().reference().child("Restaurants").child(restaurantUid).child("Tables").child("RestTable1").child("order")
ref.observe(.value) { (snapshot) in
if let orderChildSnapshots = snapshot.children.allObjects as! [DataSnapshot] {
for dish in orderChildSnapshots {
print("dish: \(dish.key)")
ref.child(dish.key).observeSingleEvent(of: .value) { (dishSnapshot) in
if let dict = dishSnapshot.value as? [String: AnyObject] {
let name = dict["dishName"] as? String
let price = dict["dishPrice"] as? Int
print("dishName: \(name)")
print("dishPrice: \(price)")
}
}
}
}
}
关于ios - 从 Firebase 快照保存/检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54298045/