UITableViewController 用 Alamofire 加载网络数据, tableView 加载数据过程是什么?

2016-01-08 13:56:39 +08:00
 touzi

场景:从上一个 tableView 点击传入 uid ,然后在 viewDidLoad 里面做数据查询,最后展示到 tableView 中。
问题:用 Alamofire 做 GET 请求得到结果,但在 Alamofire 打印结果条数为 0 ,在 Alamofire 内打印有结果条数。具体请看代码

class SealViewController: UITableViewController {

    var userId: String!
    var seals: [SealModel] = []

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        print("uid->", userId)
        //加在公告 json 数据
        Alamofire.request(.GET, SERVICEAPIDOMAIN + "/Mobile/MobileHandler.ashx?method=toAudit&uid=" + userId).responseJSON {
            response in
            if let apiData = response.result.value {
                let json = JSON(apiData)
                for var i = 0; i < json["items"].count; i++ {
                    let line = json["items"][i]
                    self.seals.append(SealModel(id: line["ID"].stringValue, title: line["TitleStr"].stringValue, content: line["ContentStr"].stringValue, dateTime: line["TimeStr"].stringValue, type: line["Type"].stringValue))
                }
            }
            print("Alamofire-sealsCount->", self.seals.count)
        }

        tableView.reloadData()
        print("sealsCount->", self.seals.count)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

打印输出结果

uid-> 69
sealsCount-> 0
Alamofire-sealsCount-> 12

如何让才能让 sealsCount 打印输出的时候就有结果?

2338 次点击
所在节点    iDev
4 条回复
Keita1314
2016-01-08 14:08:16 +08:00
viewDidLoad 是 View 加载完成之后执行的函数,网络请求是异步行为,你在请求完成之后才能获取得数据,但此时 viewDiDLoad 已经执行完毕了,需要展示到 tableView ,可以在获取网络请求的响应之后再 reloadData
touzi
2016-01-08 14:24:10 +08:00
@Keita1314 感谢!
free9fw
2016-01-09 10:42:43 +08:00
reloadData 应写在请求回调里
fork3rt
2016-12-29 15:16:09 +08:00
遇到了同样的问题, 感谢楼主和 1,3 楼~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/249285

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX