2017-12-07 11 views
1

私はリクエストをしてデータを取得し、10個の配列に分割して2秒かかる。しかし、それらをUICollectionViewにソートすると、データを表示するのに約10秒かかります。だから私はすぐにすべてを印刷することができUICollectionview遅いデータの再ロード

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() 
} 

が、10秒が通過するまではデータがUICollectionViewに表示されていない:ここに私のコードです。ローディング時間はインターネット接続速度に依存しません。

答えて

3

問題は、バックグラウンドスレッドでUICollectionViewをリロードしていることです。直ちにビューを更新する必要があるものはすべて、メインスレッドで実行する必要があります。再読み込み文を変更するだけです:

DispatchQueue.main.async { 
     self.dataCollection.reloadData() 
    } 
関連する問題