【问题标题】:StorageReference to URL存储对 URL 的引用
【发布时间】:2020-04-17 18:01:45
【问题描述】:

我正在尝试遵循 Firebase 的文档,了解如何在应用程序中向用户显示来自 firebase 存储的图像。这是下面的文档:

// Reference to an image file in Firebase Storage
let reference = storageRef.child("images/stars.jpg")

// UIImageView in your ViewController
let imageView: UIImageView = self.imageView

// Placeholder image
let placeholderImage = UIImage(named: "placeholder.jpg")

// Load the image using SDWebImage
imageView.sd_setImage(with: reference, placeholderImage: placeholderImage)

我自己尝试这样做:

//get image url from deal
self.ref.child("deals").child("log").child(currentDealView).child("pictures").child(currentImageView).child("imageSelected").child("imageSelected").observeSingleEvent(of: .value) { (snapshot) in
    let imageUrlString = snapshot.value as! String
    let imageUrlUrl = URL(string: imageUrlString)

    print(imageUrlString)
    //prints "deals/log/dealNumber83/pictures/googleScreenshot/imageSelected"

    // Reference to an image file in Firebase Storage
    let reference = self.storageRef.child(imageUrlString)

    // UIImageView in your ViewController
    let viewPicImageView: UIImageView = self.viewPicImageView

    // Placeholder image
    let placeholderImage = UIImage(named: "placeholder.jpg")

    // Load the image using SDWebImage

    viewPicImageView.sd_setImage(with: reference, placeholderImage: placeholderImage)

但在最后一行,我在“with:reference”处出现错误,说:“无法将 'StorageReference' 类型的值转换为预期的参数类型 'URL?'”我在网上找不到任何关于如何使用的信息将StorageReference 转换为URL?谢谢。

【问题讨论】:

    标签: ios swift firebase uiimageview google-cloud-storage


    【解决方案1】:

    你可以用这个:

    let Ref = Storage.storage().reference(forURL: imageUrlUrl)
    Ref.getData(maxSize: 1 * 1024 * 1024) { data, error in
        if error != nil {
            print("Error: Image could not download!")
        } else {
            yourImageView.image = UIImage(data: data!)
        }
    }
    

    希望对你有帮助...

    【讨论】:

    • 如果我使用{forURL: imageUrlUrl},我会收到错误消息“无法转换'URL 类型的值?'到预期的参数类型“字符串””。如果我将其更改为 {forURL: imageUrlString},则应用程序崩溃并出现错误“线程 1:异常:”URL 方案必须是 gs://、http:// 或 https:// 之一“”
    • 当您在存储中点击下载图像时,它会为您提供一个 url。将此写入您的代码。
    • 我使用您的代码让它工作(谢谢),我意识到我的问题是 imageURLString 是“deals/x/x/pic”,我将该字符串更改为“gs://myap- gd36f.appspot.com/deals/x/x/pic" 而是修复了它。
    【解决方案2】:

    或者,FirebaseStorageSwift 测试版利用 Swift Result 类型。 (将pod 'FirebaseStorageSwift' 添加到 Podfile。)

    let Ref = Storage.storage().reference(forURL: imageUrlUrl)
    Ref.getData(maxSize: 1 * 1024 * 1024) { result in
      switch result {
      case let .success(data):
        yourImageView.image = UIImage(data: data)
      case let .failure(error):
        print("Error: Image could not download! \(error)")
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多