首页 > 解决方案 > 试图在 Firebase 中创建一个 UIImageurl 常量

问题描述

我遇到的麻烦是在firebase中制作一个常量,它是一个uiimageurl的字符串。我将 url 存储在 firebase 数据库中。它看起来像这样: 在此处输入图像描述

在以前版本的 firebase 和 swift 中,您只需这样做即可:

let imageUrl = User.profileImageUrl

现在这不起作用,我需要找到有关如何执行此操作的更新版本。非常感谢您的回答,非常感谢!

标签: iosswiftfirebasefirebase-realtime-databasefirebase-storage

解决方案


您需要先保存图像。然后,您将能够获取保存图像的 url。这是一个例子。

func saveButtonPressed() {
    let storageRef = Storage.storage().reference(withPath: "profile_images")

    let imageData = profileImageView.image?.jpegData(compressionQuality: 0.8)
    guard let data = imageData else { return }

    let metadata = StorageMetadata()
    metadata.contentType = "image/jpeg"

    // Here you can decide where to save the image. In your case it will look something like this.
    // let ref = Storage.storage().reference(withPath: "profile_images").child(user.uid)
    storageRef.putData(data, metadata: metadata) { (metadata, error) in
        if let _ = error {
            // Error Handling...
            return
        }

        storageRef.downloadURL { (url, error) in
            if let _ = error {
                // Error Handling...
                return
            }

            guard let url = url else { return }
            let urlString = url.absoluteString
            print(urlString)
        }
    }
}

希望这可以帮助。

因此,如果您想获取已保存在存储中的图像的 url。您首先需要它所在的引用。

//Example as above
let storageRef = Storage.storage().reference(withPath: "profile_images").child(user.uid)
storageRef.downloadURL { (url, error) in
            if let _ = error {
                // Error Handling...
                return
            }

            guard let url = url else { return }
            let urlString = url.absoluteString
            print(urlString)
        }

如果参考中没有图像,您将收到错误消息。它与我提供的第一个答案基本相同,但没有保存。由于图像已经存在,您可以只使用 ref.downloadURL。希望这可以帮助。


推荐阅读