se llama a numberOfRowsInSection antes de la connection Alamofire

Recibo datos de Alamofire en viewDidLoad , luego lo pongo en answerArray. Sin embargo, antes de la connection de Alamofire, se invoca numberOfRowsInSection y devuelve 0. ¿Cómo puedo get datos de Alamofire primero, luego get eventArray.count en numberOfRowsInSection ?

 var answerArray = NSMutableArray() override func viewDidLoad() { let parameters = [ "id":questionNum ] Alamofire.request(.POST, "http://localhost:3000/api/v1/questions/question_detail",parameters: parameters, encoding: .JSON) .responseJSON { (request, response, JSON, error) in println(JSON!) // Make models from JSON data self.answerArray = (JSON!["answers"] as? NSMutableArray)! } self.tableView.reloadData() } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return answerArray.count } 

El comportamiento es normal. UITableView delegate invoca numberOfRowsInSection según sea necesario.

Todo lo que necesitas es activar self.tableView.reloadData() para actualizar la tabla.

 Alamofire.request(.POST, "http://localhost:3000/api/v1/questions/question_detail",parameters: parameters, encoding: .JSON) .responseJSON { (request, response, JSON, error) in println(JSON!) // Make models from JSON data self.answerArray = (JSON!["answers"] as? NSMutableArray)! self.tableView.reloadData() } 

Creo que una manera más elegante sería volver a cargar tableView cada vez que asigne a answerArray para que tableView se actualice automáticamente cada vez que obtenga una respuesta de su API.

Mueva self.tableView.reloadData() en callback didSet .

 var answerArray = NSMutableArray() { didSet { self.tableView.reloadData() } }