Matriz de relleno de la base de Firebase dos veces – Swift

Tengo dos matrices de cadenas: una que contiene numbers de order y una que contiene direcciones.

Extraigo datos de Firebase en viewDidAppear utilizando una function que contiene lo siguiente:

self.localOrderNumberArray.removeAll() self.localAddressArray.removeAll() self.orderNumbers.removeAll() self.addresses.removeAll() self.tableView.reloadData() if onItsWayCompanyNameStoreNumberCourierNumberRootRef != nil { let deliveryRef = onItsWayCompanyNameStoreNumberCourierNumberRootRef.childByAppendingPath("deliveries") deliveryRef.observeEventType(.ChildAdded, withBlock: { snapshot in self.orderNumbers.removeAll() self.addresses.removeAll() print(snapshot.value.objectForKey("orderNumber")) let orderNumberPulledFromFirebase = snapshot.value.objectForKey("orderNumber") as! String self.localOrderNumberArray.insert(orderNumberPulledFromFirebase, atIndex: 0) let addressPulledFromFirebase = snapshot.value.objectForKey("address") as! String self.localAddressArray.insert(addressPulledFromFirebase, atIndex: 0) self.orderNumbers = self.localOrderNumberArray self.addresses = self.localAddressArray self.tableView.reloadData() }) } 

La function rellena una UITableView con los datos extraídos de Firebase.

Todo funciona bien cuando ejecuto la aplicación por primera vez. Puedo agregar datos a Firebase a través de una function diferente, y la function anterior atraerá los nuevos datos a UITableView muy bien.

Sin embargo, cuando accedo a un controller de vista diferente (otra UITableView, en este caso), y luego vuelvo a la vista que contiene la function anterior, la function llena el número de order y las matrices de direcciones dos veces cuando agrego nuevos datos .

Si comparo la otra UITableView por segunda vez y luego vuelvo a ver que contiene la function anterior, la function rellena el número de order y las matrices de direcciones tres veces cuando agrego nuevos datos . Y así sucesivamente y así sucesivamente.

Es lo más extraño. No puedo resolverlo, y está a punto de llevarme al límite. Por favor ayuda.

Está llamando a deliveryRef.observeEventType en viewDidAppear . viewDidAppear se llamará cada vez que se viewDidAppear ViewController. Entonces, cuando se ajusta a otro ViewController y vuelve, viewDidAppear se llamará de nuevo y deliveryRef.observeEventType se registrará nuevamente. Tan efectivamente hay dos oyentes haciendo el mismo trabajo en su viewController que agregará datos duplicates a la matriz.

Tienes que implementar una lógica para hacer observeEventType solo una vez en ViewController.