【问题标题】:Firebase Storage retrieval imagesFirebase 存储检索图像
【发布时间】:2016-06-17 08:31:15
【问题描述】:

我正在努力了解 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       
    }
}

【问题讨论】:

    标签: swift firebase firebase-storage


    【解决方案1】:

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

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

    第二种方法被嵌入到 firebase 框架中,并为您提供了下载图像的便捷方法,即它为您提供了指定图像大小的选项。这可能已针对获取图像进行了优化,并且在大多数情况下是首选方法。

    【讨论】:

      猜你喜欢
      • 2017-02-23
      • 1970-01-01
      • 2020-10-23
      • 2017-08-30
      • 2021-03-26
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      相关资源
      最近更新 更多