同步下载 Firebase 存储

Download Firebase Storage Synchronously

我正在努力从 Firebase 存储下载图像并将其显示在 table 视图中。我一直在用这个:

referenceOfImage.data(withMaxSize: 100 * 1024 * 1024) { data, error in
    if let error = error {
        print(error)
    } else {
        guard let data = data else {
            print("no data")
            return
        }
        guard let image = UIImage(data: data) else {
            print("no image")
            return
        }
        //use image

    }
}

但是,根据文档,任务

Asynchronously downloads the object at the FIRStorageReference to an NSData object in memory.

我目前正在使用循环下载多张图片,如果我可以同步下载图片效果会更好(否则循环会继续,任务将无法完成)。如何同步下载图片?谢谢!

你不能。这些方法是异步的,因为它们需要服务器调用,使它们同步会阻塞主线程并导致非常差的用户体验和性能。你可以设置你的完成调用来做一些递归,也许?

将图像加载到一个函数中,该函数采用要获取的事物数组、当前索引和完成时调用的选择器。有一个终止条件(index == array.count),当所有图像都加载时调用你想要发生的选择器,否则在索引处获取图像,并在完成处理程序中,递增索引并获取下一个图像通过调用相同的方法。