在swift中从云端发送dispatch_async和downlaing图像

时间:2016-09-30 18:55:12

标签: swift firebase dispatch-async

我正在尝试从Firebase下载一些包含图片的帖子,并将其显示在我的tableview中。在下面的代码中,我注意到tableview只有在从preLoadImage函数调用下载了每个图像后才会被加载。我在另一个dispatch_async调用中调用整个loadDataFromFirebase()调用。我在这做错了什么? preLoadImage函数不应该在后台队列中运行并且tableview立即加载吗?

现在我从日志中看到这一点,所以我可以告诉所有1+ MB图像先被下载然后加载了tableview。谢谢 下载图像 下载图像 下载图像 下载图像 下载图像 下载图像 下载图像 下载图像 下载图像 下载图像 在TableView中

// 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")

        })


        }

    }

1 个答案:

答案 0 :(得分:0)

在preLoadImage()中使用它修复了它。这看起来是否正确?

if (image != "") {
            dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0))  {
                UIImage.cachedImageWithURL(image)
                print ("Downlading image")
            }