我试图了解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
}
}
答案 0 :(得分:0)
关于第一种方法,您不应该将其用于网络呼叫。来自文档:
请勿使用此同步方法来请求基于网络的网址。对于基于网络的URL,此方法可以在慢速网络上阻止当前线程数十秒,从而导致用户体验不佳,而在iOS中,可能会导致应用程序被终止。相反,对于非文件URL,请考虑使用NSURLSession类的dataTaskWithURL:completionHandler:方法。有关详细信息,请参阅URL会话编程指南。
第二种方法融入了firebase框架,为您提供了下载图像的便捷方法,即它为您提供了指定图像大小的选项。这可能是为获取图像而优化的,在大多数情况下都是首选方法。