Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 暂停observeEventType Firebase_Swift_Firebase - Fatal编程技术网

Swift 暂停observeEventType Firebase

Swift 暂停observeEventType Firebase,swift,firebase,Swift,Firebase,我目前有一个observeEventType函数,然后在我的iOS应用程序中有一个transitionBlock。它们都使用相同的ref,导致应用程序在observeEventType处崩溃 self.ref.child("data").child("lynes").observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in print(snapshot.value!)

我目前有一个observeEventType函数,然后在我的iOS应用程序中有一个transitionBlock。它们都使用相同的ref,导致应用程序在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 {....

是否有任何方法可以从持续侦听暂停此事件以查看数据更改,并在我的转换块完成后运行它

好吧,我最后做的就是编写一个简单的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)
}}

当出现空错误时,这是一种解决方法

好吧,我最后做的就是编写一个简单的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)
}}

当出现空错误时,这是一种解决方法

在同一个ref/位置上有多个侦听器没有固有的问题。你确定那是撞车的原因吗?你能添加足够的代码来显示吗。我觉得代码看起来有点不正常,我还在努力。我的转换块看起来很混乱,这是因为这个问题->确定。这就留下了一个问题:代码的崩溃原因是什么。如果你能把它减少到与那次事故相关的部分,我也会很高兴。例外是非常明确的。您将获得一个空值并将其硬转换到字典。在此之前,您需要检查snapshot.exists()是否为
,或者snapshot.value是否为NSNull是否为
。看,是的,这就是我最后做的:)谢谢!在同一个ref/位置上有多个侦听器没有固有的问题。你确定那是撞车的原因吗?你能添加足够的代码来显示吗。我觉得代码看起来有点不正常,我还在努力。我的转换块看起来很混乱,这是因为这个问题->确定。这就留下了一个问题:代码的崩溃原因是什么。如果你能把它减少到与那次事故相关的部分,我也会很高兴。例外是非常明确的。您将获得一个空值并将其硬转换到字典。在此之前,您需要检查snapshot.exists()是否为
,或者snapshot.value是否为NSNull是否为
。看,是的,这就是我最后做的:)谢谢!