SDWebImage 不适用于 Firebase 存储图像下载

SDWebImage not working with Firebase storage image download

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

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

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

下面是我的 cod ewhixh 无法运行我的应用程序。

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

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

}];

Error : method not found in sd web image

请帮助我,我卡在这里了。

我通过实现 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 中实现它。

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

我已经将 firebase 与 SDWebImage 一起使用,您可以使用以下方法进行 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 方法,但为此您需要提供完整的 url firebase 存储,如下所示。

完整 URL : storageRef.fullPath

希望对您有所帮助。

不要忘记像这样导入 SDWebImage 模块 (Swift)

@import SDWebImage

或 Obj-C

#import <SDWebImage/UIImageView+WebCache.h>

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

只需在您的 Podfile 中添加以下 pod

pod 'FirebaseUI/Storage'

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

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

希望对您有所帮助。

  1. BridgingHeader.h 文件添加到您的项目中:
#import <FirebaseStorageUI.h>
  1. 然后在你的 class:
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
            //...
        })
}

对于 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)