【问题标题】:swift check to see if firebase value is true or false快速检查firebase值是真还是假
【发布时间】:2016-06-20 19:09:33
【问题描述】:

您好,我正在从 firebase 检索一些信息,我正在寻找的数据是三个子级深度并且包含一个布尔值。当我打印值时,我能够得到结果,但我无法查看结果是真还是假。

func userInfo() {

    let dbRef = FIRDatabase.database().reference()
    let stRef = FIRStorage.storage().reference()

    dbRef.child("users/\(userBiD!)").observeEventType(.Value, withBlock: { snapshot in

        let name = snapshot.value!["firstname"] as! String
        let profileImage = snapshot.value!["profilePic"] as! String
        let receivePostRequest = snapshot.value?["receivePostRequest"]

        self.nameLabel.text = name
        self.dbUserProfilePic(self.profilePhotoImageView, imageLink: profileImage)

        let receivePost = snapshot.childSnapshotForPath("receivePostRequest")

        let tags = receivePost.childSnapshotForPath("tags")

        for child in tags.children {

            /* 
            ...
            tags{
                tag1 = true
                tag2 = false

             }
            //I need to print all keys that have a true value

            */

        }

    })

}

firebase json

【问题讨论】:

  • tags.children的结构是什么?
  • @AMomchilov 请查看我添加的确切 json 的编辑。我通常会在 key values = true 的地方进行查询,但因为我在闭包 firebase 内不允许我进行查询。

标签: swift firebase


【解决方案1】:

因为,根据Firebase Docs.children 是。 . .

此快照中子节点的快照 的迭代器。您可以使用本机 for..in 语法。

。 . .那么您必须使用.value 访问他们的数据并使用.key 访问他们的密钥。

因此,您可以这样做。

func userInfo() {

    let dbRef = FIRDatabase.database().reference()
    let stRef = FIRStorage.storage().reference()

    dbRef.child("users/\(userBiD!)").observeEventType(.Value, withBlock: { snapshot in

        let name = snapshot.value!["firstname"] as! String
        let profileImage = snapshot.value!["profilePic"] as! String
        let receivePostRequest = snapshot.value?["receivePostRequest"]

        self.nameLabel.text = name
        self.dbUserProfilePic(self.profilePhotoImageView, imageLink: profileImage)

        let receivePost = snapshot.childSnapshotForPath("receivePostRequest")

        let tags = receivePost.childSnapshotForPath("tags")

        for child in tags.children {
            // NEW
            if child.value == true {
                print(child.key)
            }
            // NEW
        }

    })

}

或者,如果您想将所有真实值保存在一个数组中。

func userInfo() {

    let dbRef = FIRDatabase.database().reference()
    let stRef = FIRStorage.storage().reference()

    dbRef.child("users/\(userBiD!)").observeEventType(.Value, withBlock: { snapshot in

        let name = snapshot.value!["firstname"] as! String
        let profileImage = snapshot.value!["profilePic"] as! String
        let receivePostRequest = snapshot.value?["receivePostRequest"]

        self.nameLabel.text = name
        self.dbUserProfilePic(self.profilePhotoImageView, imageLink: profileImage)

        let receivePost = snapshot.childSnapshotForPath("receivePostRequest")

        let tags = receivePost.childSnapshotForPath("tags")

        for child in tags.children {
            // NEW
            var trueValues: [Bool] = []

            if child.value == true {
                trueValues.append(child.key)
            }
            // NEW
        }

    })

}

【讨论】:

    猜你喜欢
    • 2020-12-31
    • 2021-11-23
    • 2019-01-21
    • 2019-08-09
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多