在Swift中从Firebase数据库中检索数据

时间:2016-06-21 13:03:07

标签: ios swift firebase firebase-realtime-database

我知道有一些关于Firebase数据库的类似问题,但我找不到合适的解决方案。对不起。

我在ViewController.swift文件中创建了一个tableview。我想要做的是从Firebase数据库获取数据并将它们逐个放入tableview单元格。在每个tableview单元格中,只有一个textview,我想让它等于来自数据库的句子值。但是,从数据库获取数据存在问题。我认为问题出现在快照部分(在下面的代码中),因为我添加了print(“SNAP:(snap)”)函数以检查它是否有效,但它甚至没有打印。 / p>

这是我在ViewController.swift文件中的viewDidLoad函数:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.dataSource = self

    DataService.dataService.REF_SENTENCES.observeEventType(FIRDataEventType.Value, 
withBlock: { (snapshot) in
        self.sentences = []
        if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
            for snap in snapshots {
                print("SNAP: \(snap)")
                if let sentenceDictionary = snap.value as? [String : AnyObject] {
                    let key = snap.key
                    let sentence = Sentence(sentenceKey: key, dictionary: sentenceDictionary)
                    self.sentences.append(sentence)
                }
            }
        }
        self.tableView.reloadData()
    })
}

这里是Firebase数据库的DataService.swift文件:

提醒:我的项目的实际网址不同。这只是一个例子。

let URL_BASE = "https://example-project.firebaseio.com"
class DataService {
static let dataService = DataService()

private var _REF_BASE = FIRDatabase.database().referenceFromURL(URL_BASE)
private var _REF_SENTENCES = FIRDatabase.database().referenceFromURL("\(URL_BASE)/sentences")

var REF_BASE: FIRDatabaseReference {
    return _REF_BASE
}

var REF_SENTENCES: FIRDatabaseReference {
    return _REF_SENTENCES
} 

}

这是Firebase数据库:Firebase Database Screenshot

更新 由于Firebase SDK已升级,因此在新Firebase中以不同方式调用某些功能。我在从数据库获取数据时遇到问题的原因是因为我在项目中使用了一些旧版本的Firebase代码。

0 个答案:

没有答案