SDWebImage无法使用Firebase存储图像下载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDWebImage无法使用Firebase存储图像下载相关的知识,希望对你有一定的参考价值。

我正在使用一个项目,该项目使用Firebase存储API并从Firebase获取一些图像。

使用NSData逻辑与服务器下载图像一起工作并将其显示到我的应用程序中。

但同样的事情不是通过SDWebImage SDK工作,因为我需要在SDWebImage中组合firebase网址,因为firebase文档也提到绑定它并用于下载图像。通过SDWebImage存储

下面是我的鳕鱼ewhixh不能正常工作我的应用程序。

FIRStoragereference *ref = [[FIRStorage storage] referenceWithPath:myfilepath];

[Cell.imgDetail sd_setImageWithStorageReference:ref placeholderImage:nil completion:^(UIImage *image,

}];

错误:在sd Web图像中找不到方法

请帮帮我,我被困在这里。

答案

我使用了firebase withSDWebImage,您可以使用以下方法进行StorageReference

对于此方法,您需要为UIImageView添加一个类别文件

#import "UIImageView+FirebaseStorage.h"

你可以在FireBaseUIIOS找到这个文件

FIRStorageReference *storageRef = [[FIRStorage storage]
                                           referenceWithPath:[NSString stringWithFormat:@"/Folder/images/%@",<IMAGE_NAME>]];


        [cell.imgDetail sd_setImageWithStorageReference:storageRef
                                       placeholderImage:nil
                                             completion:^(UIImage *image,
                                                          NSError *error,
                                                          SDImageCacheType
                                                          cacheType,
                                                          FIRStorageReference *ref) {
                                                 if (error != nil) {
                                                     NSLog(@"Error loading image: %@", error.localizedDescription);
                                                 }
                                             }];

你也可以使用上面的@ Shafi的SDWebImage方法,但为此你需要提供如下所示的完整的firebase存储URL。

完整网址:storageRef.fullPath

希望这会对你有所帮助。

另一答案

FirebaseUi已经为SDWebImage提供了自己的小扩展。

只需在Podfile中添加以下pod即可

pod'FirebaseUI / Storage'

并使用以下代码行来使用Firebase存储参考缓存图像。

// Load the image using SDWebImage
[imageView sd_setImageWithStorageReference:reference placeholderImage:placeholderImage];

希望这会帮助你。

另一答案

我通过实现SDWebImage的其他方法解决了这个问题

SDWebImageManager.shared().downloadImage(with:"Your Firebase Url", options: .refreshCached, progress: nil, completed: { (image, error, cache, isDownloader, url) in
    if image != nil { 
        YourImageView.image = image       
     }
})

这是在Swift中,但您可以在Objective-C中实现它。

这是一个链接: https://github.com/rs/SDWebImage/issues/845

另一答案
  1. 使用以下命令将BridgingHeader.h文件添加到项目中:
#import <FirebaseStorageUI.h>
  1. 然后在你的班上:
import UIKit
import FirebaseStorageUI // <-- don't forget to import this

func getImage() {

    let reference = storageRef.child(imageFileName)

    myImageView.sd_setImage(with: reference, placeholderImage: UIImage(named: "bg"), completion: { (image, error, cacheType, storageRef) in
            //...
        })
}
另一答案

别忘了像这样导入SDWebImage模块(Swift)

@import SDWebImage

或者对于Obj-C

#import <SDWebImage/UIImageView+WebCache.h>
另一答案

对于Swift 4(完美工作)

请先安装这个PODS:

pod 'Firebase/Storage'
pod 'SDWebImage', '~> 4.0'
pod 'FirebaseUI/Storage'

然后在你的Xcode 9+中:

import FirebaseStorage
import SDWebImage
import FirebaseUI


let reference = Storage.storage().reference(withPath: "your image path")
let imageView: UIImageView = self.imageView
imageView.sd_setImage(with: reference)

以上是关于SDWebImage无法使用Firebase存储图像下载的主要内容,如果未能解决你的问题,请参考以下文章

iOS GIF动态图(显示、上传、保存)

如何将SDWebImage转换为UIImage?

SDWebImage原理和使用

无法使用 firebase 功能将图像上传到 firebase 存储

Firebase 图像存储 - 缩略图

无法使用 Flutter Mobile 上传到 Firebase 存储