Сохранение / получение данных из моментальной копии Firebase - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь сохранить товары, заказанные пользователем, и получить информацию на другом конце, но при извлечении данных это больше не словарь, и я не могу получить доступ к товарам из заказа.

Это то, что я использую для сохранения данных

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
    ])

} это печать () того, что отправляется:

["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 информации о блюде, но не смог.

Буду признателен за любую помощь!Спасибо:)

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Видимо, я просто пропустил один уровень вниз после того, как добирался до предметов в заказе.

                if let orders = dictionary["order"] as? [String:AnyObject]{

                for items in orders{

                    if let item = orders[items.key] as? [String:AnyObject]{
                        let dishName = item["dishName"] as? String
                        let dishPrice = item["dishPrice"] as? Double
                        let dishQuantity = item["dishQuantity"] as? Int
                        let servWFood = item["servWFood"] as? Bool

                        print("dishName \(dishName), dishPrice: \(dishPrice), dishQuantity: \(dishQuantity), servWFood: \(servWFood)")

                    }
                }
            }
0 голосов
/ 22 января 2019

попробуйте это, чтобы получить заказы на "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)")
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...