swift - 如何从 Firebase 一次检索整个对象?

标签 swift firebase firebase-realtime-database

我刚刚开始使用 Firebase 进行 Swift 编程。我设法使用以下方法从 Json 中获取了一些数据:

   let ref = FIRDatabase.database().reference()
        ref.child("Posts").child("1").child("Post").child("Like").observeSingleEvent(of: .value, with: { (Snapshot) in
            let Value = Snapshot.value as? Int
            print(Value!)
        })

但是,我试图先获取整个对象,然后再获取每个元素的值。所以这是我的尝试,但我的应用程序不断终止:

let ref = FIRDatabase.database().reference()
        ref.child("Posts").child("1").child("Post").observeSingleEvent(of: FIRDataEventType.childAdded, with: { (snapshot) in
                print(snapshot.children.value(forKey: "Like") as? Int)
                print(snapshot.children.value(forKey: "Image") as? String)
        })

知道我在哪里犯了错误吗? 这是我的 Json:

{
    "Posts": {
        "1": {
            "Post": {
                "Poster_ID": "ID",
                "Post_Time_stamp": "12:12:12AM",
                "Image": "img.png",
                "Video": "video.mov",
                "Like": "3",
                "Dislike": "0",
                "Massage": {
                    "Massage_ID": "MSG_ID",
                    "Massager": "id",
                    "Massage_Time_stamp": "12:12:12PM",
                    "Massage_content": "comment"
                }


            }
        },
        "2": {
            "Post": {
                "Poster_ID": "ID",
                "Post_Time_stamp": "12:12:12AM",
                "Image": "img.png",
                "Video": "video.mov",
                "Like": "3",
                "Dislike": "0",
                "Massage": {
                    "Massage_ID": "MSG_ID",
                    "Massager": "id",
                    "Massage_Time_stamp": "12:12:12PM",
                    "Massage_content": "comment"
                }


            }
        }
    },
    "User": {
        "1": {
            "User_name": "name",
            "User_pass": "pass",
            "User_avatar": "img.png"
        },
        "2": {
            "User_name": "name",
            "User_pass": "pass",
            "User_avatar": "img.png"
        }
    }
}

最佳答案

先尝试打印快照,看看是否能检索到任何内容,如果不能,试试这个

使用 FIRDataEventType 作为 .value 而不是 .childAdded。由于 .childAdded 仅在将子节点添加到该引用节点时触发,因此 .value 检索当前值作为该引用点..

let ref = FIRDatabase.database().reference()
    ref.child("Posts").child("1").child("Post").observeSingleEvent(of: .value, with: { (snapshot) in
            print(snapshot)
            print(snapshot.children.value(forKey: "Like") as? Int)
            print(snapshot.children.value(forKey: "Image") as? String)
    })

关于swift - 如何从 Firebase 一次检索整个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43661737/

相关文章:

javascript - AngularJS 中的奇怪重定向

firebase - 使用 Flutter 访问 Firestore 中的第 n 个文档

javascript - 无法使用 Promise => Promise.all 更新 Firebase 引用值

swift - 从 UIColor 获取色调会产生错误的结果

ios - 如何在不降低分辨率的情况下降低 UIImage 的质量?

ios - NSNotification 中心如何管理它观察对象?

java - Firebase 数据库使用 map 获取子项的特定值

ios - 如何更快地从 Firebase Firestore 获取数据?

firebase - Flutter web : tried to call a non-function, 比如null : 'dart. global.firebase.storage

ios - 我需要经常更新 TableView 但这样做会复制单元格