我正在使用一个项目,该项目使用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中找不到方法
请帮助我,我被困在这里。
答案 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中实现它。
答案 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)
inferSchema
文件:BridgingHeader.h
#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)