firebase读取swift后数组为空

时间:2016-11-11 17:48:22

标签: xcode firebase firebase-realtime-database swift3

所以我有一个类型为Order的数组AllOrders,每次我想要刷新表我想清空AllOrders数组以从数据库中获取新的信息。 但问题是我总是得到一个空数组。

我尝试了以下解决方案:

  1. 创造了一个延迟:当我把延迟时间延长到42秒时,这个工作有效,但谁可以等待42秒。来吧...

  2. 搜索了异步同步的转换器,但没有找到任何内容。

  3. 我知道firebase函数是异步的,这是造成我问题的原因。

        let userkey = sessionName.trimmingCharacters(in: .whitespaces)
    
        ref.child(userkey).child("handyman-orders").observeSingleEvent(of: .value, with: { snapshot in
            let enumerator = snapshot.children
            while let rest = enumerator.nextObject() as? FIRDataSnapshot {
                let newOrder = Orders()
                newOrder.service = (rest.childSnapshot(forPath: "Name").value! as? String)!
                newOrder.image = (rest.childSnapshot(forPath: "image").value! as? String)!
                newOrder.DeliveryType = (rest.childSnapshot(forPath: "DeliveryType").value! as? String)!
                newOrder.PickupInfo = (rest.childSnapshot(forPath: "PickupInfo").value! as? String)!
                newOrder.address = (rest.childSnapshot(forPath: "address").value! as? String)!
                allOrders.append(newOrder)
            }
            print("handyman  orders recieved")
        })
    
        ref.child(userkey).child("laundary-orders").observeSingleEvent(of: .value, with: { snapshot in
            let enumerator = snapshot.children
            while let rest = enumerator.nextObject() as? FIRDataSnapshot {
                let newOrder = Orders()
                newOrder.service = (rest.childSnapshot(forPath: "Name").value! as? String)!
                newOrder.image = (rest.childSnapshot(forPath: "image").value! as? String)!
                newOrder.DeliveryType = (rest.childSnapshot(forPath: "DeliveryType").value! as? String)!
                newOrder.PickupInfo = (rest.childSnapshot(forPath: "PickupInfo").value! as? String)!
                newOrder.address = (rest.childSnapshot(forPath: "address").value! as? String)!
                allOrders.append(newOrder)
                print("while laundary getorders",allOrders)
            }
            print("Laudanry orders recieved")
    
        })
        refreshControl.endRefreshing()
        ref.removeAllObservers()
    }
    

    我的刷新表函数是

     func refreshtable(_ sender: AnyObject) {
        allOrders.removeAll(keepingCapacity: false)
        getAllOrders()
        self.tableView.reloadData()
    }
    

    有人有什么想法吗? 我将非常感激。 感谢

0 个答案:

没有答案