此应用程序正在从后台线程修改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() } }
每当您从后台线程上调用的代码触摸界面时,请务必执行此操作。 除了在主线程上,您绝不能永远不会永远不会触摸界面。