在Alamofire连接

时间:2015-07-19 06:16:26

标签: ios swift uitableview alamofire

我在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

}

2 个答案:

答案 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()
    }
}