Firebase 2,在快照中访问子值会产生空值

时间:2016-07-18 04:07:13

标签: swift firebase firebase-realtime-database

我一直在尝试使用firebase的快照,但是当我尝试访问特定的子节点时,输出为空。

var ref = FIRDatabaseReference.init()

func loadData {
    ref = FIRDatabase.database().reference(

    ref.child("Posts").child(postId).observeSingleEventOfType(.Value, withBlock: { snapshot in

        print(snapshot.value?["PostText"] as! String) // Optional(<null>)
        print(snapshot)
        for child in snapshot.children {

            if child.childSnapshotForPath("PostText").value == nil {
                self.postText.text = ""

            } else {
                self.postText.text = child.childSnapshotForPath("PostText").value as? String // Optional(<null>)

                print(child.childSnapshotForPath("PostText").value)
            }

        }
    })
}

打印输出(快照)

Snap (84844) {
Author = lGAV1KUhSCP8hnFiKY1N9lBPrmmst1;
CommentsCount = 1;
Group = 665555;
ImageUrl = "http://i.telegraph.co.uk/multimedia/archive/03589/Wellcome_Image_Awa_3589699k.jpg";
PostText = "I like cakeh, but theijijijijijij truth is, it's too sweet. So SOMETIMES I dont eat it, but i LIKE CAKE.";
}

1 个答案:

答案 0 :(得分:0)

您的快照看起来像是一个字典。然后你必须把它作为一个字典:

    func loadData {
    ref = FIRDatabase.database().reference(

        ref.child("Posts").child(postId).observeSingleEventOfType(.Value, withBlock: { snapshot in

            print(snapshot.value?["PostText"] as! String) // Optional(<null>)
            print(snapshot)
            let dict = snapshot.value as! Dictionary<String, AnyObject>
            if let author = dict["Author"] as? String, commentsCount = dict["CommentsCount"] as? Int, group = dict["Group"] as? Int {
                print("author \(author) commentsCount \(commentsCount), group: \(group)")
            }
        })
}

对ImageUrl和PostText执行相同操作,它们应该转换为String