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")
})
}
}
すべての画像をダウンロードするのではなく、バックグラウンドでダウンロードする画像の数を制限する方法があるかどうか不思議です。 – user3470200