Populating tablesview cells de JSON con Alamofire (Swift 2)

tengo el siguiente código.

import UIKit import Alamofire class CheHappyTableViewController: UITableViewController, NSURLConnectionDelegate { var happyHours = [HappyHour]() override func viewDidLoad() { super.viewDidLoad() //Load the cell elements loadHappyHourElements() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func loadHappyHourElements(){ let testhappyhour:HappyHour = HappyHour(title: "TEST", image: "TESST", description: "TEST", postedDate: "TEST") self.happyHours.append(testhappyhour) let url:String = "https://gist.githubusercontent.com/arianitp/036133ebb5af317a595c/raw/f134ec241ec3126bedd6debe5de371e3e01d225b/happyhours.json" Alamofire.request(.GET, url, encoding:.JSON).responseJSON { response in switch response.result { case .Success(let JSON): let response = JSON as! NSArray for item in response { // loop through data items let obj = item as! NSDictionary let happyhour = HappyHour(title:obj["title"] as! String, image:obj["image"] as! String, description:obj["description"] as! String, postedDate:obj["date"] as! String) self.happyHours.append(happyhour) } case .Failure(let error): print("Request failed with error: \(error)") } } self.tableView.reloadData() } override func numberOfSectionsInTableView(tableView: UITableView) -> Int { // #warning Incomplete implementation, return the number of sections return 1 } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return happyHours.count } //Displays the cells in the table override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { self.tableView.rowHeight = UIScreen.mainScreen().bounds.size.width let cellIdentifier = "CheHappyTableViewCellController" let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! CheHappyTableViewCellController let happyHour = happyHours[indexPath.row] cell.lblTitle.text = happyHour.title //cell.cheHappyImage = happyHour.photo // Configure the cell... return cell } } 

Las celdas de la tabla no se actualizan aunque he incluido el self.tableView.reloadData() en la function de request completa de Alamofire. También he definido un object de muestra con título y todas las properties configuradas en "TEST", esto se carga, sin embargo, el file JSON no rellena la tabla. Puedo ver que el file se está descargando correctamente y leído, pero creo que los elementos no se están agregando a happyHours Variables de happyHours o de alguna manera los elementos no se happyHours cargar.

Probé muchas soluciones desde aquí, pero sin éxito. ¿Qué estoy haciendo mal?

Su línea self.tableView.reloadData() está fuera de la callback, lo que significa que se llama de inmediato, antes de que se carguen los datos. Prueba esto:

 func loadHappyHourElements(){ let testhappyhour:HappyHour = HappyHour(title: "TEST", image: "TESST", description: "TEST", postedDate: "TEST") self.happyHours.append(testhappyhour) let url:String = "https://gist.githubusercontent.com/arianitp/036133ebb5af317a595c/raw/f134ec241ec3126bedd6debe5de371e3e01d225b/happyhours.json" Alamofire.request(.GET, url, encoding:.JSON).responseJSON { response in switch response.result { case .Success(let JSON): let response = JSON as! NSArray for item in response { // loop through data items let obj = item as! NSDictionary let happyhour = HappyHour(title:obj["title"] as! String, image:obj["image"] as! String, description:obj["description"] as! String, postedDate:obj["date"] as! String) self.happyHours.append(happyhour) } self.tableView.reloadData() case .Failure(let error): print("Request failed with error: \(error)") } } }