2017-05-03 1 views
0

J'utilise FirebaseUI utiliser Firebase comme source de données pour mon UITableView. Dans Firebase, j'ai deux bases de données - Utilisateurs & demandes de postes. Je souhaite remplir mes cellules UITableView avec les informations de la base de données "Request Posts". J'ai essayé d'exécuter le code ci-dessous et requestPostDatabase s'avère toujours être nul. J'ai essayé plusieurs autres façons mais je ne peux pas obtenir les enfants de "Request Post Database".base de données Accès à l'aide FirebaseUI pour iOS

self.datasource = self.tableView.bind(to: self.ref) { tableView, indexPath, snapshot in 

      if let snap = snapshot.value as? Dictionary<String, Any> { 
       let requestPostDatabase = snap["Request Posts"] 
       print(requestPostDatabase) 
      } 

      let cell = tableView.dequeueReusableCell(withIdentifier: "postCell", for: indexPath) as! PostCell 
      return cell 
     } 

J'ai aussi essayé de le faire,

let snap = snapshot.child("Request Posts") 

pour mettre la main sur la demande base de messages, mais pour une raison quelconque la fonction enfant() ne sont pas disponibles.

+0

u peut ajouter à votre fonction de question d'obtenir un instantané? –

+0

Je suis désolé mais je n'ai pas compris votre question. – pranavhgupta

+0

Je crois que vous essayez de prendre des données erronées. Je vais poster une réponse bientôt –

Répondre

0

Je crois que vous devez utiliser @escaping en fonction de l'obtention de données à partir de Firebase.

Comme vous avez votre tableau de données pour les cellules dans le contrôleur:

var arrayOfData: [DataItem]() 

Ensuite, en fonction de l'obtention de données:

static func getData(completion: @escaping (_ data: [DataItem]) -> Void) { 
    var data = [DataItem]() 
    let ref = FIRDatabase.database().reference().child(...).child... // your ref 
    ref.observeSingleEvent(of: .value, with: { snapshot in 
    // here you need to parse data and fill array from snapshot 
    // and data.append(/*your parsed data*/) 
    // then return data to completion handler 
    completion(data) 
    }) 
} 

Comme ça. Vous devriez avoir l'idée.

Ensuite, vous pouvez, par exemple, en fonction de l'utilisation viewDidLoad():

getData(completion: { newData in 
    self.data = newData 
    self.tableView.reloadData() 
}) 

Et vous pouvez utiliser ce tableau pour remplir votre tableView

Hope it helps

+0

Merci beaucoup pour votre aide. Savez-vous comment pourrais-je parvenir à FirebaseUI - https://github.com/firebase/FirebaseUI-iOS/tree/master/FirebaseDatabaseUI – pranavhgupta

+0

Si elle a contribué - marquer pls. Btw - non, je n'ai pas, parce que je ne suis pas sûr si c'est un bon pour MVC. J'ai une couche modèle de communication avec la base de données/stockage Firebase. Je n'ai aucun "import Firebase" dans ma couche de vue. Mais c'est ton choix. Bonne chance :) –

+0

@pranavhgupta de toute façon. Pouvez-vous montrer votre liaison self.ref? comme laisser ref = FIRDatabase.database() enfant référence() (...) –