簡體   English   中英

如何從 firebase 存儲中檢索數據

[英]How to retrieve data from firebase storage

嘿,我正在嘗試檢索保存在 firebase 存儲中的用戶圖像,但我正在使用此存儲路徑(firebase 中的個人資料圖片文件夾)作為字符串(子路徑)來更新用戶圖像。 當用戶配置文件更新沒有錯誤時,這段代碼只是沒有像我預期的那樣更新用戶圖像,我在這里遺漏了什么可以讓我成功地創建用戶圖像並解決我的問題?

                            var spaceRef = Storage.storage().reference()
                        let storagePath = "gs://tunnel-vision-bc055.appspot.com/images/space.jpg"
                        spaceRef = Storage.storage().reference(forURL: storagePath)
                       let reference = spaceRef.child("profilePic")

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

                        // Placeholder image
                        let placeholderImage = UIImage(named: "image/jpeg")

                        // Load the image using SDWebImage
                        imageView.sd_setImage(with: reference, placeholderImage: placeholderImage)
                            // Uh-oh, an error occurred!
                            return
                          }

這不會是您所有問題的答案,但希望是其中的一些問題。

首先,在Swift中,變量和常量以小寫字母開頭。 大寫字母類。 例如,您的 ProfileImage 應該是 profileImage。 為清楚起見,當我鍵入 profileImage 時,我指的是您的 ProfileImage。

現在,類型。 您發布的代碼中有一個不變的 profileImage 。 這是字符串類型。 您將鍵“ProfileImageUrl”的值設置為它。 我會將其名稱更改為 profileImageURL。

然后(根據您的評論之一)您正在調用 self.profileImage

let imageView: UIImageView = self.profileImage

由於您沒有看到任何錯誤,我假設您還有一個名為 profileImage 的 class 屬性,類型為 UIImageView。

// let user = User(ProfileImage: ProfileImage)

不會幫助你。 據我從您發布的代碼中了解到 - 以及您想要實現的目標 - 您也可以刪除它。 或者像我上面那樣評論它(//)。

你想要做的是設置一個 imageView 的圖像。

為此你需要做

imageView.image = image

為此,您需要一個 imageView 和一張圖片。 如果您不知道如何創建 imageView,請在此處搜索答案。

然后,您可以根據從 Firebase 獲得的 url 創建圖像,並將其設置為 imageView。有點像這樣

let profileImageURL = value?["ProfileImageUrl"] as? String ?? ""
let url = URL(string: profileImageURL)

DispatchQueue.global().async {
    guard let data = Data(contentsOf: url) else {return} // if url is nil, return block is executed and code below is not
    DispatchQueue.main.async {
        self.imageView.image = UIImage(data: data)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM