2016-09-30 4 views
0

Firebaseのイメージを含むいくつかのポストをダウンロードし、それらを私のテーブルビューに表示しようとしています。下のコードでは、preLoadImage関数呼び出しからすべてのイメージをダウンロードした後にのみ、tableviewが読み込まれることに気付きました。別のdispatch_async呼び出しでloadDataFromFirebase()呼び出し全体を呼び出しています。私はここで間違って何をしていますか? preLoadImage関数がバックグラウンドキューとテーブルビューロードですぐに実行されるべきではありませんか?swatchで雲からdispatch_asyncとdownlaingイメージをダウンロード

今、ログからこれを見るので、最初にすべての1MB以上のイメージがダウンロードされてから、tableviewがロードされることがわかります。おかげで )preLoadImage(でこれを使用してテーブルビュー

// loadDataFromFirebase is being called from another dispatch_async call 
func loadDataFromFirebase() { 

     print("Global: Loading data from Firebase") 
     // code to retrieve data.     

     self.globalPost.insert(userPost, atIndex: 0) 
//helps imageloading -- this is the one that causes the delay 
     self.preLoadImage(userPost.userImage) 
     print ("Obtained DATA in loadDataFromFirebase") 


     } 




// image loading - this is called in a background queue but until the download here doesn't finish my tableview does not load. 

    func preLoadImage(image: String) { 
     if (image != "") { 
      dispatch_async(dispatch_get_main_queue(), { 
       UIImage.cachedImageWithURL(image) 
       print ("Downlading image") 

     }) 


     } 

    } 
+0

すべての画像をダウンロードするのではなく、バックグラウンドでダウンロードする画像の数を制限する方法があるかどうか不思議です。 – user3470200

答えて

0

で画像 をDownlading画像 Downlading画像 Downlading画像 をDownlading画像 Downlading画像 をDownlading画像 Downlading画像 をDownlading画像 Downlading画像 をDownladingそれを修正しました。これは正しいか?

if (image != "") { 
      dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) { 
       UIImage.cachedImageWithURL(image) 
       print ("Downlading image") 
      } 
関連する問題