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

时间:2017-02-06 08:43:33

标签: ios objective-c firebase firebase-storage sdwebimage

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

使用NSData逻辑与服务器上的下载图像一起正常工作并将其显示在我的应用中。

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

下面是我的鳕鱼ewhixh无法使用我的应用程序。

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

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

}];
  

错误:在sd web image中找不到方法

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

6 个答案:

答案 0 :(得分:4)

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

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

  

pod' FirebaseUI / Storage'

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

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

希望这会对你有所帮助。

答案 1 :(得分:3)

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

答案 2 :(得分:1)

我使用了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

希望这会对你有所帮助。

答案 3 :(得分:1)

  1. 使用以下内容向项目添加inferSchema文件:
  2. BridgingHeader.h
    1. 然后在你班上:
    2. #import <FirebaseStorageUI.h>
      

答案 4 :(得分:0)

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

@import SDWebImage

或Obj-C

#import <SDWebImage/UIImageView+WebCache.h>

答案 5 :(得分:0)

对于Swift 4(完美工作)

请先安装此盒:

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)