2017-09-08 39 views
1

我当前正在从下面的代码下载Firebase Storage中的图像文件,以获得缩略图UICollectionView。当我点击其中一个缩略图时,该应用会跳到另一个UIViewController,然后从Firebase下载更多图像存储。 目前该应用程序在下载UIViewController中的下一张图像之前会等待所有缩略图完成下载。是否可以增加UIViewController中新图像的优先级或取消所有其他下载以立即开始新图像?Firebase下载任务队列Swift

var imageRef = storageRef.child("Thumbnails/\(itemID).jpg") 
imageRef.getData(maxSize: 10 * 1024 * 1024) { data, error 
    if let error = error { 
     // Uh-oh, an error occurred! 
     print("Error: \(error.localizedDescription)") 
    } else { 
     let image = UIImage(data: data!) 
     self.newsNameArray.append(name) 
     self.newsImageArray.append(image!) 
     self.newsBarCollectionView?.reloadData()       
     } 
} 

谢谢

回答

1

你可以得到这样一个StorageDownloadTask的引用:在阵列

var allTasks: [StorageDownloadTask] = [] 

var imageRef = storageRef.child("Thumbnails/\(itemID).jpg") 
let downloadTask = imageRef.getData(maxSize: 10 * 1024 * 1024) { data, error 
    if let error = error { 
     // Uh-oh, an error occurred! 
     print("Error: \(error.localizedDescription)") 
    } else { 
     let image = UIImage(data: data!) 
     self.newsNameArray.append(name) 
     self.newsImageArray.append(image!) 
     self.newsBarCollectionView?.reloadData()       
     } 
} 

存储您的downloadTasks和下载新的图像前取消所有任务:

allTasks.append(downloadTask) 

... 

for task in allTasks { 
    task.cancel() 
}