Rellenar una vista de colección con datos de database

Estoy intentando recrear un nuevo proyecto de base de fuego donde se completa una vista de tabla con datos de la database en time real de la database que contienen enlaces a imágenes en el almacenamiento de database.

Puedo completar el proyecto tutorial, que es una vista de tabla con datos de database. Pero con mi proyecto actual es una vista de colección dentro de una extensión.

He networkingucido el problema a mis variables

var ref: FIRDatabaseReference! var messages: [FIRDataSnapshot]! = [] var msglength: NSNumber = 10 private var _refHandle: FIRDatabaseHandle! 

específicamente

 var messages: [FIRDataSnapshot]! = [] 

Lo que creo es una matriz de mis datos que obtengo de la base de firebase.

Luego llamo a una function que debería llenar esa matriz en mi viewdidload ()

 func loadPosts(){ self.messages.removeAll() // Listen for new messages in the Firebase database _refHandle = self.ref.child("messages").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in //print("1") self.messages.append(snapshot) //print(self.messages.count) }) } 

El problema ocurre cuando bash completar mi vista de collections, ya que quiero un desplazamiento horizontal. Utilizo una extensión. En la extensión, encuentro que mi matriz de valores siempre es 0, pero en mi function loadPosts (), el recuento de mi> array es el mismo valor que la cantidad de publicaciones que tengo en la base de firebase.

 extension HomeViewController : UICollectionViewDataSource { func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { return 1 } func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return messages.count } func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { print(messages.count) let cell = collectionView.dequeueReusableCellWithReuseIdentifier(StoryBoard.CellIdentifier, forIndexPath: indexPath) as! InterestCollectionViewCell // Unpack message from Firebase DataSnapshot let messageSnapshot: FIRDataSnapshot! = self.messages[indexPath.row] let message = messageSnapshot.value as! Dictionary<String, String> let name = message[Constants.MessageFields.name] as String! if let imageUrl = message[Constants.MessageFields.imageUrl] { if imageUrl.hasPrefix("gs://") { FIRStorage.storage().referenceForURL(imageUrl).dataWithMaxSize(INT64_MAX){ (data, error) in if let error = error { print("Error downloading: \(error)") return } cell.featunetworkingImageView?.image = UIImage.init(data: data!) } } else if let url = NSURL(string:imageUrl), data = NSData(contentsOfURL: url) { cell.featunetworkingImageView?.image = UIImage.init(data: data) } cell.interestTitleLabel?.text = "sent by: \(name)" } return cell } } 

¿No debería usar FIRDataSnapshot? Si es así, ¿cuál es el correcto para usar? ¿O debo abordar el proyecto de otra forma que no use extensiones?

Está insertando correctamente los elementos en su matriz dentro del bloque de finalización, pero le falta una llamada para recargar su colecciónView.