Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在数组中获取.child键?_Swift_Firebase - Fatal编程技术网

Swift 如何在数组中获取.child键?

Swift 如何在数组中获取.child键?,swift,firebase,Swift,Firebase,我想将所有被阻止的用户子项保存为代码中的字符串。尽管听起来很简单,我还是没能弄明白 static func block(myself: String, posterUID: String){ var blockedUserRef = Database.database().reference().child("users").child(myself).child("blockedUsers").child(posterUID) blockedUserRef.setValue(

我想将所有被阻止的用户子项保存为代码中的字符串。尽管听起来很简单,我还是没能弄明白

static func block(myself: String, posterUID:  String){
    var blockedUserRef = Database.database().reference().child("users").child(myself).child("blockedUsers").child(posterUID)
    blockedUserRef.setValue(true)

    var blokedArray:[String] = []
    var handle:DatabaseHandle!

    blockedUserRef = Database.database().reference()
    handle = blockedUserRef.child("blockedUsers").observe(.childAdded, with:{ (DataSnapshot) in
        if let item = DataSnapshot.value as? String{
            blokedArray.append(item)
        }
    })



}
我想让我的阻塞用户数组通过for循环,并从显示中过滤它们

ref.observeSingleEvent(of: .value, with: { (snapshot) in
        guard let snapshot = snapshot.children.allObjects as? [DataSnapshot]
            else { return completion([]) }

        // 3 filter the user from the array
        let users =
            snapshot
                .flatMap(User.init)
                .filter { $0.uid != currentUser.uid }
这是我的firebase:

 "users" : {
    "3YLVUDA8YnSuVYUTxv6cvOQPSjm1" : {
       "username" : "This can be done by saving all of the child entries of blockedUsers to an array that will hold all your strings.

To do this, first create an empty array like

myList:[string] = []
“用户”:{
“3YLVUDA8YnSuVYUTxv6cvOQPSjm1”:{

“username”:“这可以通过将blockedUsers的所有子条目保存到一个包含所有字符串的数组来完成

为此,首先创建一个空数组,如

var ref: DatabaseReference!
然后,您需要创建对Firebase数据库的引用,如:

var handle:DatabaseHandle!
您还需要一个数据库句柄来在数据库中导航:

ref = Database.database().reference()
    handle = ref?.child("blockedUsers").observe(.childAdded, with:{ (DataSnapshot) in
        if let item = DataSnapshot.value as? String{
            self.myList.append(item)
        }
    })
现在,您需要转到ViewDidLoad函数并添加如下代码:

这段代码检查是否向子数据库“blockedUsers”添加了一个条目,并从中添加刚刚输入数组的内容

现在,您有了一个数组,其中填充了子数据库中的所有内容blockedUsers。您现在可以在UITableView中使用该数组,或者在标签中列出它


希望这有帮助!

“将所有被阻止的用户子项保存为字符串"这意味着什么?你想要每个节点的所有被阻止用户吗?即来自3YL节点的被阻止用户,以及来自4du、58t、JLJ节点等的被阻止用户?此外,连同@matt comment,你想将字符串保存在哪里,以及在字符串中想要什么。还有……请以文本形式发布你的firebsase结构,请不要图像和图片您还应该包括您尝试过的代码,以便我们了解您的用例。@Jay我只想将被阻止的用户放入一个数组中,然后将它们放入循环并过滤。我根据您所说的内容编辑了上面的代码,因为某些原因,我无法将我的firebase添加为字符串。您可以始终在问题中添加文本。若要了解您的问题,请你的firebase结构,转到你的firebase控制台,单击右边的三个点,然后导出JSON。你可以从该文件复制和粘贴。@Jay我做到了,谢谢你的代码。我正在做这个UserServoce,我没有ViewDidL.。在那里。除此之外,我想将这些添加到一个用户服务数组中,这样我就可以过滤块了d用户。我将发布一些图片和代码,这些图片和代码来自我对你的代码所做的工作。谢谢你,盖尼添加了你的代码(你可以再次查看我的帖子),但它似乎没有添加到数组中。请帮我解决这个问题