При использовании .childAdded для наблюдения он будет проходить через каждого существующего потомка в «PlaylistName», который в этом случае будет каждым пользователем, который что-то сохранил.
Возможно, придется пересмотреть вашу структуру.Или используйте childByAutoID.
Редактировать: Чтобы использовать child с автоматическим идентификатором
// Your ["Name": Playlist] will get nested into an autogenerated child
self.ref?.child("PlaylistName").child(userID!).childByAutoID().setValue(["Name":playlistName])
//You will be listening for any new additions that your current user has made
databaseHandle = ref?.child("PlaylistName").child(Auth.auth().currentUser!.uid).observe(.childAdded, with: { (snapshot) in
// this loops through a list of playlist names your user creates
for child in snapshot.children{
let snap = child as! DataSnapshot
let value = snap.value as? Dict<String,Any>
let post = value["Name"] as! String
if let actualPost = post {
self.playlistNameArray.append(actualPost)
self.tableView.reloadData()
}
}
})
Но мое предложение, если оно подходит вашему приложению, будет состоять в том, чтобы изменить структуру данных, потому что это можетсделайте вашу структуру более плоской.
self.ref?.child(userID!).child("PlaylistName").setValue(playListName)
databaseHandle = ref?.child(userID!).observe(.childAdded, with: { (snapshot) in
let value = snapshot.value as? Dict<String,Any>
let post = value["PlaylistName"]
if let actualPost = post {
self.playlistNameArray.append(actualPost)
self.tableView.reloadData()
}
})