暂停observeEventType Firebase

时间:2016-06-10 22:22:57

标签: swift firebase

我目前有一个observeEventType函数,然后是我的iOS应用程序中的transitionBlock。它们都使用相同的引用,导致应用程序在observeEventType

崩溃
  self.ref.child("data").child("lynes").observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
            print(snapshot.value!)
            self.removeAll()

            var data = snapshot.value! as! [String: AnyObject]

            //Code Crashes on the line above

            for (key, value) in data {
                print("\(key) -> \(value["name"]!)")
                    dataArray.append(key)
                    locArray.append(value["location"] as! String)
                nameArray.append(value["name"] as! String)
                totalArray.append(value["total"] as! Int)
            }


            self.configureSearchController()

            print(dataArray)

            self.tableView.reloadData()


            // ...
        })

错误:无法将'NSNull'(0x10df0f600)类型的值转换为'NSDictionary'(0x10df0efe8)。

在按钮上单击视图后调用的transitionBlock:

self.ref.child("data").runTransactionBlock({ (currentData: FIRMutableData) -> FIRTransactionResult in
        if var post = currentData.value as? [String : AnyObject], let uid = FIRAuth.auth()?.currentUser?.uid {....

有没有办法从持续监听暂停此事件以更改数据,而是在我的转换块完成后运行它?

1 个答案:

答案 0 :(得分:1)

好吧,所以我最终做的是编写一个简单的if语句,捕获是否存在null。

if let data =  snapshot.value! as? [String: AnyObject] {
                for (key, value) in data {
                    print("\(key) -> \(value["name"]!)")
                    dataArray.append(key)
                    locArray.append(value["location"] as! String)
                    nameArray.append(value["name"] as! String)
                    totalArray.append(value["total"] as! Int)
}}

当出现null错误时,这是​​一种解决方法。