首页 > 解决方案 > 如何从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

}

标签: iosjsonswiftfirebasefirebase-realtime-database

解决方案


guard let value = data.value as? NSDictionary else { return }
guard let obj = value.allValues as? [String] else { return }
self.triviaList = obj
self.collectionView?.reloadData()

推荐阅读