簡體   English   中英

嘗試使用 CODABLE 類通過 id 在 firebase 中查找文檔時出現 Swift 錯誤

[英]Swift error trying to find document in firebase by id using CODABLE class

我正在嘗試使用其 id 查找文檔並將其存儲在自定義數據類中。 到目前為止,我已經創建了我的第一個功能來通過電子郵件在 Firebase 中搜索用戶。 電子郵件是文檔的 ID。 我還創建了一個類來存儲用戶。 你可以在這里看到這兩個代碼:我的 firebase 數據庫: 在此處輸入圖像描述 我的課:

import Foundation
import FirebaseFirestoreSwift


    class Usuario: Codable {
    @DocumentID var email: String?
    let nombre: String
    let apellidos: String
    let telefono: String
    let contraseña: String
    let fotoPerfil: String?
    let ciudad: String
    
        init ( nombre: String, apellidos: String, usuario: String, contraseña: String, fotoPerfil: String?, ciudad: String){
            self.nombre = nombre
            self.apellidos = apellidos
            self.telefono = usuario
            self.contraseña = contraseña
            self.fotoPerfil = nil
            self.ciudad = ciudad
    }

我的功能:

private func buscarUsuarioPorEmail( documentId: String) {
  let docRef = db.collection("Usuarios").document("lorenzorubiorivera@hotmail.com")
  print("This is a quick check for debugging:  \(documentId)")
  docRef.getDocument(as: Usuario.self) { result in
    switch result {
    case .success(let usuario):
      self.usuarioActual = usuario
        print("El usuario actual es: \(self.usuarioActual.nombre) ")
        print(result)
    case .failure(let error):
      print("ERROR ENCONTRADO USUARIO \(error.localizedDescription)")
    }
  }
}

我的主要觀點:

import UIKit
import FirebaseAuth
import FirebaseCore
import FirebaseAnalytics
import FirebaseFirestore
import Lottie

class InicioViewController: UIViewController {
    // He utilizado una variable tipo lazy para poder inicializarla más tarde cuando se llama a la base datos
    lazy var usuarioActual = Usuario()
    lazy var usersCollection = Firestore.firestore().collection("Usuarios")
    @IBOutlet weak var txtEmailUsuario: UITextView!
    // Creamos una conexión a Firestore
    private let db = Firestore.firestore()
    lazy var collectioRef = db.collection("Usuarios")
    
    // MARK: -- Recupero el email mediante su clave en UserDefaults
    private let email = UserDefaults.standard.string(forKey: "emailAutentificado")
    override func viewDidLoad() {
        super.viewDidLoad()
        title = "Datos usuario actual"
        txtEmailUsuario.text = email
        buscarUsuarioPorEmail(documentId: email!)
}

我總是收到相同的控制台錯誤:

這是調試的快速檢查:lorenzorubiorivera@hotmail.com
ERROR ENCONTRADO USUARIO 數據丟失,無法讀取。

所以我認為問題可能出在您的可解碼變量中:

let contraseña: String

翻譯 看起來這意味着password ,所以如果您將其設置為可為空,或者只是將其刪除,請查看它是否開始工作,因為您的文檔不包含密碼鍵的值。

暫無
暫無

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

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