如何为 Swift 配置 Firebase 并读出数据

Posted

技术标签:

【中文标题】如何为 Swift 配置 Firebase 并读出数据【英文标题】:How to configure Firebase for Swift and read data out 【发布时间】:2018-11-28 09:48:18 【问题描述】:

我已经为我的 Swift ios 应用安装了 Firebase

在我的 AppDelegate 文件中,我像这样导入 Firebase:

  import Firebase
    import FirebaseDatabase

并初始化它:

FirebaseApp.configure()

之后我检查数据库是否连接,它首先打印出“未连接”,然后是“已连接”,所以我认为它是成功的

    var ref:DatabaseReference!
    var databaseHandle:DatabaseHandle!

    override func viewDidLoad() 
     let connectedRef = Database.database().reference(withPath: ".info/connected")
        connectedRef.observe(.value, with:  snapshot in
            if snapshot.value as? Bool ?? false 
                print("Connected")
             else 
                print("Not connected")
            
        )

但后来我尝试访问我的数据,但它什么也没给我!

 ref = Database.database().reference()
    databaseHandle = ref.child("Meal").observe(.childAdded, with:  (snapshot) in
        print(snapshot.value as Any)

这是来自控制台 Firebase 的快照

我也可以切换到实时数据库,那里没有数据,但我可以允许读/写访问(我都设置为 true)

  "rules": 
    ".read": true,
    ".write": true
  

可能是什么问题,所以我无法打印出我的数据?....

【问题讨论】:

【参考方案1】:

问题是您尝试使用 Firebase 方法访问 Firestore。

“但后来我尝试访问我的数据,但它什么也没给我!”它什么也没给您,因为 Firebase 中没有数据,您的所有数据都在 Firestore 中。

请参阅 Firestore 指南:https://firebase.google.com/docs/firestore/quickstart

这一点来了解 Firebase 和 Firestore 之间的区别: https://firebase.google.com/docs/database/rtdb-vs-firestore

【讨论】:

【参考方案2】:

访问 Firebase 实时数据库和 Firestore 数据是有区别的

您可以访问您的 Cloud Firestore 数据,如下所示

在 ViewDidLoad 中

let db = Firestore.firestore()
let ref =  db.collection("Meal").document("\(myRiderUID!)")
db.collection("Meal").getDocuments()  (querySnapshot, err) in
    if let err = err 
        print("Error getting documents: \(err)")
     else 
        for document in querySnapshot!.documents 
            print("\(document.documentID) => \(document.data())")
        
    

【讨论】:

以上是关于如何为 Swift 配置 Firebase 并读出数据的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Firebase 项目配置动态链接?

如何为风味维度组合配置 Firebase App Distribution?

如何为 Firebase 数据库序列化我的 User 类并修复此错误?

如何为 Firebase 取消部署 Cloud Functions?

如何为自定义 UIControl 添加触摸事件并在 swift 5 中确定触摸的项目

如何为firebase字段添加价值