【问题标题】:Reading data from Firebase to TableView从 Firebase 读取数据到 TableView
【发布时间】:2017-06-09 18:19:15
【问题描述】:
我尝试将数据库中的数据提取到TableView。
当我访问数据时,我收到错误:“类型'Any'没有下标成员”。这是不起作用的代码:
let title = snapshot.value!["Title"] as! String
let location = snapshot.value!["Location"] as! String
let date = snapshot.value!["Date"] as! String
我对每一行都得到相同的错误。
【问题讨论】:
标签:
swift
firebase
firebase-realtime-database
tableview
【解决方案1】:
如果您在 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如果它失败将这些变量设置回默认值。
【解决方案2】:
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)