ios - 如何从firebase读取数据?
问题描述
我将数据存储在 firebase 实时数据库中,如下所示:
{
trivia: {
"0": "long text",
"1": "long text",
"2": "long text",
}
}
但是当我从数据库中导出 json 时,它会呈现为一个数组,如下所示:
{
trivia: ["long text", "long text", "long text"]
}
现在做什么?以下是我的快速代码,我收到此错误 - “无法将类型 '__NSArrayM' (0x106630b68) 的值转换为 'NSString' (0x104b802a8)。”
class TriviaViewController: UICollectionViewController {
var triviaList = [String]()
var ref: DatabaseReference!
override func viewDidLoad() {
super.viewDidLoad()
setupNavBar()
setupCollectionView()
fetchTriviaFromFirebase()
}
func fetchTriviaFromFirebase() {
ref = Database.database().reference()
ref?.child("trivia").observeSingleEvent(of: .value, with: { (data) in
self.triviaList.append(data.value as! String)
self.collectionView?.reloadData()
})
}
// Other functions - colectionview methds and other methods are below
}
解决方案
guard let value = data.value as? NSDictionary else { return }
guard let obj = value.allValues as? [String] else { return }
self.triviaList = obj
self.collectionView?.reloadData()
推荐阅读
- android - 如何在 sqlite 数据库中插入图像
- android - Proguard 构建失败并添加了外部库
- ios - NSAttributedString 的初始化使应用程序崩溃
- html - 为什么更改背景颜色会阻止此 CSS 切换按钮正常工作
- android - 如何在 Android 中使用动画更改操作栏的内容?
- javascript - 如何将值从一个 javascript 函数传递到 html.erb 中的另一个
- asp.net-core - Asp.net Core Api 自定义路由
- c - 为什么我们在套接字编程c中使用memset将结构填充为0?
- android - searchActivity 的 setContentView 时 App 崩溃
- laravel - 使用消息'SQLSTATE [42S22] 照亮/数据库/查询异常:找不到列:1054