UICollectionview缓慢的数据重新加载

时间:2017-12-07 18:06:07

标签: arrays json swift uicollectionview

我发出请求,获取数据,将它们分成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秒过去。加载时间并不依赖于互联网连接速度。

1 个答案:

答案 0 :(得分:3)

问题是您正在后台线程上重新加载UICollectionView。任何应该立即更新视图的东西必须在主线程上运行。只需更改您的重新加载声明:

   DispatchQueue.main.async {
      self.dataCollection.reloadData()
   }