我目前有一个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 {....
有没有办法从持续监听暂停此事件以更改数据,而是在我的转换块完成后运行它?
答案 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错误时,这是一种解决方法。