我在viewDidLoad
中获取Alamofire的数据,然后将其放入answerArray。但是,在Alamofire连接之前,调用numberOfRowsInSection
并返回0.如何首先获取Alamofire的数据,然后在eventArray.count
获取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
}
答案 0 :(得分:6)
行为正常。 UITableView
委托根据需要调用numberOfRowsInSection
。
您只需要触发self.tableView.reloadData()
来刷新表格。
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()
}
答案 1 :(得分:6)
我认为每次分配到answerArray
时,更优雅的方法是重新加载tableView,以便每当您从API获得响应时tableView都会自动更新。
将self.tableView.reloadData()
移至didSet
回调。
var answerArray = NSMutableArray() {
didSet {
self.tableView.reloadData()
}
}