SD 未设置从 Firebase 存储中提取的图像

SD not setting Image pulled from Firebase Storage

我正在关注 Google 的 guide 从存储中获取图像,然后使用 "FirebaseStorageUI" 将其放入 imageView,这似乎使用了 SDWebImage。

我的问题是图像根本没有设置。控制台中没有错误。我的代码:

@IBOutlet weak var imageView: UIImageView!   
var ref = FIRDatabase.database().reference()
var storageRef = FIRStorage.storage().reference()

    override func viewWillAppear(_ animated: Bool) {
        self.getHouseID(){ (houseName) -> () in
            if houseName.characters.count > 0 {
                self.houseIDLabel.text = houseName // does work correctly
                let photoRef = self.storageRef.child("\(houseName)/\("housePhoto.jpg")")
                self.housePhotoImageView.sd_setImage(with: photoRef) // not working
                } else {
                print("error while setting image and house name label")
            }
        }
    }

我的存储看起来像这样:

标签使用 houseName 正确设置,它也用于存储路径以检索图像。我在这里遗漏了什么吗?

我的第一个猜测是您没有在主队列上设置它。

试试这个:

DispatchQueue.main.async {
  self.housePhotoImageView.sd_setImage(with: photoRef)
}

我不知道您的图像文件没有文件扩展名是否重要,这可能也值得一试。希望这有帮助

1. 我认为问题是你的 awesomehouse/ 最后有一个斜杠。

尝试检查您正在创建的 child()awesomehouseawesomehouse/

2. 第二个可能的问题是您试图获取 "housePhoto.jpg" 而不是存储 housePhoto

所以,应该是:

let photoRef = self.storageRef.child("awesomehouse/").child("housePhoto")
self.housePhotoImageView.sd_setImage(with: photoRef) // should work now

或者最好将照片保存到扩展名为 ".jpg" 的存储器中,那么它将是:

let photoRef = self.storageRef.child("awesomehouse/").child("housePhoto.jpg")
self.housePhotoImageView.sd_setImage(with: photoRef) // should work now

两个都试试。我想它会解决你的问题。

希望对您有所帮助