SDWebImage 不接受来自 Firebase Storage 的 StorageReference



我正在尝试在UITableView上显示来自Firestore和Google Storage的数据。

我有一个自定义单元格设置,它有自己的类,称为"PriceGuideCell">

在安装了 FirebaseUI/Storage pod 后,我尝试使用 Firebase 网站上显示的方法。

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! PriceGuideCell
                var item = itemData[indexPath.row]
      let reference: StorageReference = storageRef.child("test/(item.itemID!).jpg")
                    cell.nameLabel?.text = item.name
                    cell.yearLabel?.text = String(item.year)
                    cell.boxnumLabel?.text = String(item.boxnum)
                    cell.itemImage?.sd_setImage(with: reference, placeholderImage: #imageLiteral(resourceName: "placeholder"))
                }
            }
            return cell
    }

上面的代码给了我一个错误:

Cannot convert value of type 'StorageReference' to expected argument type 'URL'

下面的代码使用(参考(.downloadURL,我已经开始工作了,但我不知道这是否是最佳实践:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! PriceGuideCell
            var item = itemData[indexPath.row]
            let imageURLRef = storageRef.child("test/(item.itemID!).jpg")
            imageURLRef.downloadURL { url, error in
            if let error = error {
                print("There's an error:(error)")
            } else {
                cell.nameLabel?.text = item.name
                cell.yearLabel?.text = String(item.year)
                cell.boxnumLabel?.text = String(item.boxnum)
                cell.itemImage?.sd_setImage(with: url, placeholderImage: #imageLiteral(resourceName: "placeholder"))

            }
        }
        return cell
    }

我还需要安装其他东西才能sd_setImage接受 StorageReference?另外,我的 Podfile 针对 9.0。FirebaseUI 自述文件中有一些关于使用 8.0 的内容。我不知道这是否会影响它,但是对于我的项目使用的其他一些 pod 来说,8.0 太低了。

导入 FirebaseUISDWebImage

import FirebaseUI
import SDWebImage

Firebase 的 StorageReference 将使用以下方法:

UIImageView.sd_setImage(与: 存储引用, 占位符图像:UIImage(

如下所述:

self.imageView.sd_setImage(with: Storage.storage().reference().child(url),
                           placeholderImage: nil)

你必须在 Podfile 中

pod 'FirebaseUI/Firestore'
pod 'FirebaseUI/Storage'

(或其他组合,如此处所述 https://github.com/firebase/FirebaseUI-iOS(

和!

你必须

use_frameworks!

令人困惑的是,一些Firebase doco(2021(指出您应该避免use_frameworks!

但是,FirebaseUI将无法在没有use_frameworks!的情况下工作。

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! PriceGuideCell
                var item = itemData[indexPath.row]
      let referenceImage: StorageReference = storageRef.child("test/(item.itemID!).jpg")
      let url = URL(string: referenceImage!)!
                    cell.nameLabel?.text = item.name
                    cell.yearLabel?.text = String(item.year)
                    cell.boxnumLabel?.text = String(item.boxnum)
                    cell.itemImage?.sd_setImage(with: url, placeholderImage: #imageLiteral(resourceName: "placeholder"))
                }
            }
            return cell
    }

不要忘记在类中导入 Firebase StorageUI 框架

import FirebaseStorageUI

相关内容

  • 没有找到相关文章

最新更新