как добавить элемент Firebase в словарь - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть этот пустой словарь

let orderArray = ["name":"","quntity":"","price":""]

и когда я загружаю данные из Firebase, я хочу получить некоторые элементы и поместить их в словарь, чтобы прочитать их позже

Вот мой метод Firebase:

self.databaseRef.child("Users").child((Auth.auth().currentUser?.uid)!).child("cart").child(self.orderFromKitchen).observe(DataEventType.value, with: { (snapshot) in

    //if the reference have some values
    if snapshot.childrenCount > 0 {
        //clearing the list
        self.ordersList.removeAll()

        //iterating through all the values
        for info in snapshot.children.allObjects as! [DataSnapshot] {

            //getting values
            //let key = self.kitchensRef.childByAutoId().key
            let infoObject = info.value as? [String: AnyObject]
            let name  = infoObject?["name"]
            let Id  = infoObject?["ID"]
            let img  = infoObject?["img"]
            let price = infoObject?["price"]
            let quantity = infoObject?["quntity"]

            self.nameArr.append((name as! String?)!)
            self.quaArr.append((quantity as! String?)!)

            let info = ordersModel(id: Id as! String?, name: name as! String?, img: img as! String?, price: price as? Int,quantity:quantity as! String?)

        //here i want to add name and price to the dictionary
        self.orderArray.insert(contentsOf: "\(infoObject?["name"]!)", at: 0)
        self.orderArray.insert(contentsOf: "\(infoObject?["price"]!)", at: 2)
            self.ordersList.append(info)
        }

        //reloading the tableview
        self.tableView.reloadData()
        self.loadingView.isHidden = true
    }

1 Ответ

0 голосов
/ 03 апреля 2019

Спасибо, ребята, я исправил это большим расширением

extension Dictionary where Value: RangeReplaceableCollection {
public mutating func append(element: Value.Iterator.Element, toValueOfKey key: Key) -> Value? {
    var value: Value = self[key] ?? Value()
    value.append(element)
    self[key] = value
    return value
}
}

self.orderArray.append(element: name2 as! String, toValueOfKey: "name")

но я столкнулся с новой проблемой Firebase

вот так

2019-04-03 00:56:48.969048+0200 Ml Matba5[1809:376762] *** Terminating app
due to uncaught exception 'InvalidPathValidation', reason:
'(child:) Must be a non-empty string and not contain '.' '#' '$' '[' or ']''
*** First throw call stack:

спасибо, ребята хорошего дня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...