我正在尝试从Firebase
存储中获取图像。我必须得到与JSON
具有键值"Product":"some name"
完全相同的图像。
例如,url
:
let productImageref = productsValue[indexPath.row]["Product"] as? String
我如何才能获得正确的url
?我不明白。我阅读了所有文档,据我所知,我必须使用Firebase的“下载URL”。为了获得图像,我使用“ KingFish ”第三方库来异步进行。
我试过这样但是没有给我这个图像:
let productImageref = productsValue[indexPath.row]["nicotine"] as? String
cell!.imageView!.kf_setImageWithURL(NSURL(string: "https://firebasestorage.googleapis.com/v0/b/snuspedia.appspot.com/o/Catch%20Dry%20Eucalyptus%20White%20Mini.png?alt=media&token=68cf4b76-e35b-4868-80f3-d29872e00122")!, placeholderImage: nil)
像上面的代码一样,我可以加载图像但是我必须在每个cell
上加载不同的图像。
我做错了什么?欢迎任何提示。
答案 0 :(得分:1)
我做得非常好,但有点不对劲:D
这是一个像魅力一样的代码:
let productImageref = productsValue[indexPath.row]["Products"] as? String
FIRStorage.storage().reference().child("\(productImageref!).png").downloadURLWithCompletion({(url, error)in
if error != nil{
print(error)
}else{
(cell?.imageView)!.kf_setImageWithURL(url, placeholderImage: nil)
}
})
答案 1 :(得分:0)
GS存储网址不是您可以随时访问的真实网址。它只能在身份验证后访问。 因此,GET HTTP调用永远不会获得带有GS URL的图像。 根据我的经验,最好保留上传的图片网址:
let reference = storage.referenceForURL(Constant.Firebase.FIREBASE_STORAGE).child(imageNameWithDate())
if (picture != nil)
{
let picData = UIImageJPEGRepresentation(picture!, 0.6)
reference.putData(picData!, metadata: nil) { (metadata, error) in
if error == nil {
let link = metadata?.downloadURL()!.absoluteString
//save this link for the image URL.
}
}