在 Alamofire 连接之前调用 numberOfRowsInSection[英] numberOfRowsInSection is called before Alamofire connection

本文是小编为大家收集整理的关于在 Alamofire 连接之前调用 numberOfRowsInSection的处理方法,想解了在 Alamofire 连接之前调用 numberOfRowsInSection的问题怎么解决?在 Alamofire 连接之前调用 numberOfRowsInSection问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我在 viewDidLoad 中通过 Alamofire 获取数据,然后将其放入 answerArray.但是,在 Alamofire 连接之前,调用 numberOfRowsInSection 并返回 0.如何先通过 Alamofire 获取数据,然后在 numberOfRowsInSection 处获取 eventArray.count?

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

}

推荐答案

行为正常.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()
}

其他推荐答案

我认为更优雅的方法是在每次分配给 answerArray 时重新加载 tableView,以便在您从 API 收到响应时自动更新 tableView.

将 self.tableView.reloadData() 移到 didSet 回调.

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

本文地址:https://www.itbaoku.cn/post/924526.html