gpt4 book ai didi

swift - 暂停 observeEventType Firebase

转载 作者:可可西里 更新时间:2023-11-01 02:16:37 27 4
gpt4 key购买 nike

我目前有一个 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)。

以及在单击 View 上的按钮后调用的 transitionBlock:

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

有什么方法可以让这个事件从连续监听中暂停,以获取数据的变化,而是在我的转换 block 完成后运行它?

最佳答案

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

这是出现空错误时的解决方法。

关于swift - 暂停 observeEventType Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37757931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com