Firebase存储检索图像

时间:2016-06-17 08:31:16

标签: swift firebase firebase-storage

我试图了解Firebase存储。 我在网上看过并尝试了两种获取图像的方法。 这两者有什么区别? (都是工作)。

所以在我从Firebase数据库获取photoUrl之后:

1

if let data = NSData(contentsOfURL: NSURL(string:photoUrl)!)
{
     let myImage = UIImage(data: data)!

     MyImageCache.sharedCache.setObject(myImage, forKey: self.key)
     //etc
 }

2

 self.storage.referenceForURL(photoUrl).dataWithMaxSize(1 * 1024 * 1024) { (data, error) -> Void in
    if (error != nil)
    {
         print(error)
    }
    else
    {
        let myImage = UIImage(data: data!)

        MyImageCache.sharedCache.setObject(myImage!, forKey: self.key) 
        //etc       
    }
}

1 个答案:

答案 0 :(得分:0)

关于第一种方法,您不应该将其用于网络呼叫。来自文档:

  

请勿使用此同步方法来请求基于网络的网址。对于基于网络的URL,此方法可以在慢速网络上阻止当前线程数十秒,从而导致用户体验不佳,而在iOS中,可能会导致应用程序被终止。相反,对于非文件URL,请考虑使用NSURLSession类的dataTaskWithURL:completionHandler:方法。有关详细信息,请参阅URL会话编程指南。

第二种方法融入了firebase框架,为您提供了下载图像的便捷方法,即它为您提供了指定图像大小的选项。这可能是为获取图像而优化的,在大多数情况下都是首选方法。