此应用程序正在从后台线程修改autolayout引擎 – ios9

let url = NSURL(string: "http://api.mdec.club:3500/news?") let task = NSURLSession.sharedSession().dataTaskWithURL(url!) { (data, response, error) in self.jsonResult = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSMutableArray self.tableView.reloadData() } task.resume() 

我不明白为什么我收到这个错误。 我必须将reloadData()方法放在task因为我必须等到获取数据。 如何在不收到此错误的情况下重新加载表视图?

如何在不收到此错误的情况下重新加载表视图?

你走出主线程以调用reloadData ,如下所示:

 let task = NSURLSession.sharedSession().dataTaskWithURL(url!) { (data, response, error) in self.jsonResult = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSMutableArray dispatch_async(dispatch_get_main_queue()) { self.tableView.reloadData() } } 

每当您从后台线程上调用的代码触摸界面时,请务必执行此操作。 除了在主线程上,您绝不能永远不会永远不会触摸界面。