我发出请求,获取数据,将它们分成10个数组,这需要2秒钟。但将它们排序为UICollectionView
需要将近10秒钟才能显示数据。这是我的代码:
func makeRequest() {
let url = URL(string: "https://api.example.com/v1/ticker/?start=" + "\(startingPoint)")
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print(error!)
} else {
if let urlContent = data {
do {
let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as! [AnyObject]
var i: Int!
for i in 0..<jsonResult.count {
Global.rankArray.append(String(describing: jsonResult[i]["rank"]!!))
// 9 other similar lines
}
// Loading some views
self.dataCollection.reloadData()
} catch {
print("Error")
}
}
}
}
task.resume()
}
所以我可以快速打印所有内容但是UICollectionView
中没有数据显示,直到10秒过去。加载时间并不依赖于互联网连接速度。
答案 0 :(得分:3)
问题是您正在后台线程上重新加载UICollectionView。任何应该立即更新视图的东西必须在主线程上运行。只需更改您的重新加载声明:
DispatchQueue.main.async {
self.dataCollection.reloadData()
}