使用Firebase模拟器时sd_setImage加载图片崩溃求助
解决SDWebImage加载Firebase Storage模拟器图片崩溃问题
问题核心原因
崩溃提示的-[FIRStorageTask fetcher]: unrecognized selector sent to instance,本质是SDWebImageFirebase扩展与Firebase Storage SDK版本不兼容——新版Firebase Storage SDK移除了fetcher方法,但SDWebImage的Firebase适配代码仍在调用该方法,导致运行时找不到方法触发崩溃。
具体解决步骤
对齐SDWebImageFirebase与Firebase Storage版本
打开项目的Podfile,确保SDWebImageFirebase的版本与Firebase/Storage版本匹配。比如Firebase 10.x需要对应SDWebImageFirebase 0.10.0+版本,Firebase 9.x对应SDWebImageFirebase 0.8.x版本。修改后执行pod update更新依赖。绕过SDWebImageFirebase扩展,直接用URL加载
既然直接访问图片URL正常,可先获取Storage文件的下载URL,再用SDWebImage基础方法加载:let storageRef = Storage.storage().reference().child("images/your-image-file.jpg") storageRef.downloadURL { [weak self] url, error in guard let self = self else { return } if let error = error { print("获取下载URL失败:\(error.localizedDescription)") return } guard let downloadUrl = url else { return } // 用普通SDWebImage方法加载 self.yourImageView.sd_setImage(with: downloadUrl, placeholderImage: UIImage(named: "placeholder")) }重置Firebase模拟器与App环境
- 停止当前模拟器进程,执行
firebase emulators:start --only storage重启Storage模拟器 - 卸载测试设备上的App,清除Xcode的Derived Data,重新编译安装
- 停止当前模拟器进程,执行
临时降级Firebase SDK(若版本对齐无效)
若新版本兼容性问题未修复,可暂时降级到稳定兼容的版本,修改Podfile:pod 'Firebase/Storage', '~> 9.6.0' pod 'SDWebImageFirebase', '~> 0.8.0'执行
pod install完成降级。
内容的提问来源于stack exchange,提问作者Janene Pappas
相关产品推荐
相关产品推荐

