2015-06-10 51 views
1

大家早上好,我怎么能告诉Swift等到我的价值被下载?

这是我的问题,我想创建一个UITableView JSON我从我的网站API获得。

的问题是,他第一次执行覆盖功能的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() 
} 

我会很感激一些帮助,谢谢大家:)

+0

没有理由使用dispatch_async打电话给你的loadOrders方法。该方法已经是异步的。只需调用'self.loadOrders()'而不用dispatch_async包装器。 –

回答

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()方法将调用所有的委托方法。

+0

不幸的是,我仍然有致命误差零值发现:(我应该在哪里加载loadOrders()?我想viewDidLoad中()和viewWillAppear中却是这样吗?已经感谢您的回答 – Dinosan0908

+0

做任何修改之前,你的代码工作? – Masterfego

+0

我有一个初始化的问题太多,所以它解决了感谢你:)祝你有美好的一天!再次感谢 – Dinosan0908

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) 
       } 
     } 
    } 
} 
+0

不幸的是,我仍然有致命的错误找到零值:(我应该在哪里加载loadOrders()?我试过ViewDidLoad()和Viewwillappear,但是这样吗?已经谢谢你的回答 – Dinosan0908

+0

loadOrders首先它应该在ViewDidLoad中 –

+0

谢谢你们<3现在的工作!有一个愉快的一天:) – Dinosan0908

相关问题