簡體   English   中英

Imageurl 未保存到 Firestore 數據庫 - SwiftUI

[英]Imageurl not getting saved to Firestore database - SwiftUI

因此,我在我的應用程序中構建了一個用戶配置文件,並保存了在 Firestore 數據庫中創建的名稱、生物、圖像、uid 和日期。 雖然其他值保存在數據庫中並在用戶配置文件中檢索,但 imageurl 被保存為空字符串,因此不會在用戶配置文件中檢索。 我在哪里錯了?

import SwiftUI
import Firebase

class RegisterViewModel : ObservableObject{
    
    @Published var name = ""
    @Published var bio = ""
    
    @Published var image_Data = Data(count: 0)
    @Published var picker = false
    let ref = Firestore.firestore()
    
    // loading view
    @Published var isLoading = false
    @AppStorage("current_status") var status = false
    
    func register(){
        
        isLoading = true
        // setting user data to firestore
        let uid = Auth.auth().currentUser!.uid
        
        UploadImage(imageData: image_Data, path: "profile_Photos") { (url) in
            
            self.ref.collection("Users").document(uid).setData([
                
                "uid": uid,
                "imageurl": url,
                "username": self.name,
                "bio": self.bio,
                "dateCreated": Date()
            
            ]) {(err) in
                
                if err != nil{
                    self.isLoading = false
                    return
                }
                self.isLoading = false
                // success means setting status as true
                self.status = true
            }
            
        }
        
    }
    
}


import SwiftUI
import Firebase

func UploadImage(imageData: Data, path: String, completion: @escaping (String) -> ()){
    
    let storage = Storage.storage().reference()
    let uid = Auth.auth().currentUser!.uid
    
    storage.child(path).child(uid).putData(imageData, metadata: nil) { (_, err) in
        
        if err != nil {
            
            completion("")
            return
            
        }
        
        // downloading url and sending back
        
        storage.child(path).child(uid).downloadURL { (url, err) in
            
            if err != nil {
                
                completion("")
                return
                
            }
            
            completion("\(url!)")
            
        }
        
    }
    
}

Firestore 數據庫中的結果類似於:

生物:“生物”

日期創建時間:2022 年 9 月 22 日凌晨 1:32:43 UTC+5:30

圖片網址:“”

uid:“o32JbCwShtKLhtHibcui474NwFA9”

用戶名:“姓名”

Firestore 中不支持 Swift 的URL類型。 在保存之前,您必須將URL轉換為受支持的類型,例如String

"imageurl": url!.absoluteString

然后,當您從 Firestore 獲取字符串值時,您必須重建URL

let imageurl = URL(string: imageurl)

暫無
暫無

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

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