首页 文章

Firebase存储检索图像

提问于
浏览
0

我正试图了解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

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

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

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

相关问题