从Firebase读取数据到TableView

时间:2017-06-09 18:19:16

标签: swift firebase firebase-realtime-database tableview

我尝试将数据库中的数据提取到TableView。 当我访问数据时,我收到错误:"输入'任何'没有下标成员"。这是不起作用的代码:

        let title = snapshot.value!["Title"] as! String
        let location = snapshot.value!["Location"] as! String
        let date = snapshot.value!["Date"] as! String

每个行都会出现相同的错误。

2 个答案:

答案 0 :(得分:0)

snapshot.value的类型为Any?

尝试这样做(optional unwrapping & type casting):

if let valueDictionary = snapshot.value as? [AnyHashable:String]
{
    let title = valueDictionary["Title"]
    let location = valueDictionary["Location"]
    let date = snapshot.value!["Date"]
}

如果该字典中还有其他类型(例如本地Date对象而不是String),请将字典声明为[AnyHashable:Any],然后您需要明确像以前一样设置变量的类型(例如let title = valueDictionary["Title"] as! String

答案 1 :(得分:0)

如果要在TableViewController中进行firebase调用,可以在Firebase侦听器中执行此操作:

if let value = snapshot.value as? NSDictionary{
    if let titleValue = value["Title"] as? String{
         title = titleValue
    }
    if let locationValue = value["Location"] as? String{
         location = locationValue
    }
    if let dateValue = value["Date"] as? String{
         date = dateValue
    }
}

然后显然你有else如果失败则将这些变量设置回默认值。