2017-12-02 5 views
0

Ich bin neu in IOS und Firebase.Vorbereitung für den Übergang beim Abrufen von Daten aus Firestore

Ich habe eine Tableview, die vorliegenden Unterlagen von meinem Fires, jedes Dokument eine Unter Sammlung hat, und ich möchte um es holen, wenn ich die Reihe traf, und präsentieren die neuen Daten in einem zweiten Tableview

Jetzt I‘ mit m:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    switch segue.identifier { 

    case "showOptions"?: 
    let selectedDishTableViewController = segue.destination as! SelectedDishViewController 
    if let indexPath = tableViewDishes.indexPathForSelectedRow { 
     brain.loadOptions(dish: brain.listOfDishes[indexPath.row]) 
     selectedDishTableViewController.dish = brain.listOfDishes[indexPath.row] 
     selectedDishTableViewController.myOption = brain.myOption 
     brain.myOption.removeAll() 
     } 
     default: break 
    } 
} 

dies mein Gehirn func ist:

func loadOptions(dish:Dish) { 

     db.collection("Restaurants").document("Limon").collection("Menu").document((self.sectionName!)).collection("Dishes").document(dish.DishName).collection("Options").getDocuments { [weak self](querySnapshot, error) in 
      if error != nil {print(error)} 
      else { 
       for document in querySnapshot!.documents { 
        // appending the data to my Array that will be presented in the next tableView 
       } 
      } 
     } 

} 

, was jetzt passiert, ist, dass das erste Mal traf ich die Zeile zuerst aufgerufen idload der zweiten Tabellenansicht wird erscheinen, weil db.collection asynced ist, das Ergebnis, dass ich zurückdrücken muss und dann die selbe Zeile ankreuze, um die Daten vom ersten Treffer zu sehen.

+0

Sie auf Hauptthread zweite Controller Tabellenansicht neu geladen haben . –

+0

sollte ich eine Funktion neu laden Daten hinzufügen und nur die Tabelle neu laden oder sollte ich es in ViewDidload tun? Ich bin mir nicht sicher, wie ich das ausführen soll. –

Antwort

0

so konnte ich meine Ausgabe Zukunft Googler beheben, ich einen Abschluss-Handler für das db.collection hinzugefügt und In ViewDidApear des zweiten Tableview Ich benutze tableview.reloaddata()

Verwandte Themen