Swift Firebase嵌套儿童词典删除



firebase结构

在壁炉结构中,您可以看到我必须在所有组中删除特定的用户(CurrentUserid):

这是我尝试做的:

###########################UPDATED###################################
 let groupsRef = self.root.child("groups")
groupsRef.observeSingleEvent(of: .value, with: { snapshot in
   
    for groupChild in snapshot.children {
        let groupSnap = groupChild as! DataSnapshot
        var dict = groupSnap.value as! [String: Any]
            let uid = dict["utenti"] as! [String: Bool]
        for each in uid {                
            if each.key == self.currentUserID{
                print(each.key)
               
      //i now need a way to remove this key:value
            }
            
            }
           
        
       
    }
   
})

我是新手,所以我无法与必须删除的互联网相比,我无法进一步提取诱因的每个键,如果是相同的,我将删除。有人可以帮忙吗?

          let groupsRef = self.root.child("groups")
                    groupsRef.observeSingleEvent(of: .value, with: { snapshot in
                        for groupChild in snapshot.children {
                            let groupSnap = groupChild as! DataSnapshot
                            let groupKey = groupSnap.key
                            //added a groupKey to track the id of each group
                            var dict = groupSnap.value as! [String: Any]
                            var uid = dict["utenti"] as! [String: Bool]
                            //then for each key:value in uid check if is there a key = to currentuserID
                            for each in uid {
                                if each.key == self.currentUserID{
                                    uid.removeValue(forKey: each.key)
                                  //here you remove currentuserId from the dictionary and below 
                                 //finally you set back the new value of the dictionary without currentuserId
                   self.root.child("groups").child(groupKey).child("utenti").setValue(uid)
                                } 
                            }
                        }    
                    })

您可以使用

for (key, value) in uid {

}

循环在字典上。

但实际上,在Swift的官方文档中,请给您正确的答案...

    let groupsRef = self.root.child("groups")
            groupsRef.observeSingleEvent(of: .value, with: { snapshot in
                for groupChild in snapshot.children {
                    let groupSnap = groupChild as! DataSnapshot
                    for subGroupChild in groupSnap.children {
                        //Here you need to remove that specific user if condition match
                        //specificUserUID is that user's id that user to be deleted
                       if let snapref = subGroupSnap as! DatabaseReference {
                        snapref.queryOrdered(byChild: "utenti").queryEqual(toValue: specificUserUID).observe(.childAdded, with: { (snapshot) in
                        snapshot.removeValue(completionBlock: { (error, reference) in
                                if error != nil {
                                    print("There has been an error:(error)")
                                 }
                         })
                        })
                       }
                    }
                }
            })

您的代码会像上面一样,您只需要通过用户ID查找用户并删除该特定快照。

最新更新