如何从转义的闭包中强制'UITableView.reloadData()'在主线程上执行?

时间:2019-05-12 16:44:23

标签: ios swift uitableview

我有一个类方法,该方法进行异步API网络调用,进而调用转义的闭包,最后调用UITableView.reloadData()。但是我收到一条错误消息,提示reloadData()无法在此线程上执行,但是在通过调用countySites设置了sortByDistance()变量后,我需要它执行。如何获得reloadData()在这个转义的闭包中执行?

我尝试将对reloadData()的调用放在闭包中,但收到错误消息;

Main Thread Checker: UI API called on a background thread: -[UITableView reloadData]
PID: 3608, TID: 2897278, Thread name: (none), Queue name: NSOperationQueue 0x283d59d60 (QOS: UNSPECIFIED), QoS: 0
Backtrace:
            distanceAPI.getDistanceURLSession( url: distanceAPIURL) { (distances) in
                for siteIndex in 0 ..< self.countySites.count {

                    self.countySites[siteIndex].distance = distances![siteIndex]

                }
                self.countySites = self.sortByDistance(sites: self.countySites)
                for site in self.countySites {
                    print(site.distance)
                }

                self.tableView.reloadData()

            }

我收到上面显示的错误消息以及Xcode中报告的UITableView.reloadData() must be used from main thread only

0 个答案:

没有答案