如何告诉Swift等到我的值下载?

时间:2015-06-10 10:18:19

标签: ios json swift uitableview

大家早上好,

这是我的问题,我想用我的网站API创建一个带有JSON的UITableView

问题在于他首先执行了tableview的覆盖函数,而我的JSON数据还没有下载,我已经测试过并在打印完所有单元格时下载(没有值,用于测试)。

这是我的功能:

func loadOrders()
{   
    Alamofire.request(.GET, "myurlthatIhidebutworks").responseJSON() { (request, response, data, error) in
         println(request)
         println(response)
         println(data)
         println(error)
         self.allOrders = JSON(data!)
     }
}

我试图以viewDidLoadviewWillAppear这种方式实现这一目标,但它不起作用。

dispatch_async(dispatch_get_main_queue()) {
         self.loadOrders()
}

感谢所有人的帮助,谢谢大家:)

2 个答案:

答案 0 :(得分:2)

早上好, 在函数结束时,loadOrders()重新加载tableView:

func loadOrders()
{   
     Alamofire.request(.GET, "myurlthatIhidebutworks").responseJSON() { (request, response, data, error) in
     println(request)
     println(response)
     println(data)
     println(error)
     self.allOrders = JSON(data!)

     // Add this for example
     if data != nil
     {
       self.tableView.reloadData()
     }
}

reloadData()方法将调用所有委托方法。

答案 1 :(得分:1)

应该像这样工作

func loadOrders()
{   
    Alamofire.request(.GET, "myurlthatIhidebutworks").responseJSON() { (request, response, data, error) in
         dispatch_async(dispatch_get_main_queue()) {
              if(error != nil){
                 println(response)
                 println(data)
                 println(request)
                 self.allOrders = JSON(data!)
              }
              else{
                println(error)
              }
         }
     }
 }