ios - 如何从 FireBase 读取数据

标签 ios swift firebase firebase-realtime-database

我在 Swift 中读取 Firebase 时遇到问题。

这是我的 Firebase 数据库:

enter image description here

这是我的代码:

var ref: FIRDatabaseReference!

override func viewDidLoad() {
    super.viewDidLoad()

    NSLog("Reading from DB")

    ref = FIRDatabase.database().reference()
    self.ref?.child("Frais").observeSingleEvent(of: .value, with: { (snapshot) in
        let value = snapshot.value as? [String: Int]
        var frpx1 = (value?["frpx1"]!)!
        var frpx10 = (value?["frpx10"]!)!
        var frpx11 = (value?["frpx11"]!)!
        var frpx12 = (value?["frpx12"]!)!
        var frpx13 = (value?["frpx13"]!)!
        var frpx14 = (value?["frpx14"]!)!
        var frpx15 = (value?["frpx15"]!)!
        var frpx16 = (value?["frpx16"]!)!            
    })

    print(frpx1)
    print(frpx10)
    print(frpx11)
    print(frpx12)
    print(frpx13)
    print(frpx14)
    print(frpx15)
    print(frpx16)
}

我没有发现问题。

我没有 frpx1、...、frpx16 中数据库的数据。

最佳答案

您的代码有几个小问题:

  • 当您应该使用 [String: Any] 时,您将返回值转换为 [String: Int]因为并非所有值都是基于 String 的。

  • 您正在完成处理程序外部打印结果。您需要等待处理程序被调用,然后读取结果(即,当方法 observeSingleEvent 返回时,Firebase 仍在处理您的请求)。

解决这两个问题应该会让您继续前进:

...
self.ref?.child("Frais").observeSingleEvent(of: .value, with: { 
    (snapshot) in
    guard let value = snapshot.value as? [String: Any] else {
        print("Snapshot type mismatch: \(snapshot.key)")
        return
    }
    let frpx1  = value["frpx1"]
    let frpx10 = value["frpx10"]
    let frpx11 = value["frpx11"]
    ... 
    print(frpx1)
    print(frpx10)
    print(frpx11)
    ...
})
PS。我还稍微改进了您的编码风格,以帮助防止出现进一步的问题;)

关于ios - 如何从 FireBase 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46134843/

相关文章:

ios - 将Xcode更新到版本10.4后,Apple Pay无法正常工作

ios - PNG 预乘 Alpha,iOS 模拟器与 iPad

swift - 线程 9 : EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, 子代码=0x0) firebase

ios - Swift:日历应用程序 - 为更多字段着色

ios - 如何使用委托(delegate)在 VC 中移动数据?

arrays - Swift - 通过几个比较对数组进行排序

ios - Swift 3 - Tesseract 识别任何图像处理的抛出错误

ios - parentViewController 和presentingViewController 都为零

Flutter - Firebase Firestore 文档 uid 不存在

javascript - 使用 AngularJS 过滤 Firebase 数据