此应用程序正在从后台线程修改自动布局引擎 - ios9
This application is modifying the autolayout engine from a background thread - 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
中,因为我必须等到获取数据。我还能如何重新加载 table 视图而不出现此错误?
How else can I reload the table view without getting this error?
您跳出到主线程以调用 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()
}
}
总是这样做任何时候 当您从在后台线程上调用的代码触摸界面时。除了在主线程上,你永远不能永远永远不要接触界面。
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
中,因为我必须等到获取数据。我还能如何重新加载 table 视图而不出现此错误?
How else can I reload the table view without getting this error?
您跳出到主线程以调用 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()
}
}
总是这样做任何时候 当您从在后台线程上调用的代码触摸界面时。除了在主线程上,你永远不能永远永远不要接触界面。