Controlador de finalización Observador de Firebase en Swift

Estoy haciendo un controlador de finalización para una función que devolverá una lista de objetos. Cuando devuelve valor por primera vez, funciona bien. Pero cuando ocurre cualquier cambio en la base de datos de Firebase y nuevamente se llama a observar, el tamaño de la matriz se duplica. ¿Por qué se está duplicando?

func getStadiums(complition: @escaping ([Stadium]) -> Void){
  var stadiums: [Stadium] = []
  let stadiumRef = Database.database().reference().child("Stadium")
  stadiumRef.observe(.value, with: { (snapshot) in
    for snap in snapshot.children {
      guard let stadiumSnap = snap as? DataSnapshot else {
        print("Something wrong with Firebase DataSnapshot")
          complition(stadiums)
          return
      }
      let stadium = Stadium(snap: stadiumSnap)
      stadiums.append(stadium)
    }
    complition(stadiums)
  })
}

Y llamando así

getStadiums(){ stadiums
  print(stadiums.count) // count gets doubled up after every observe call
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta