[英]Swift error trying to find document in firebase by id using CODABLE class
I'm trying to find a document using its id and store in a custom data class.我正在尝试使用其 id 查找文档并将其存储在自定义数据类中。 So far, I've created my first function to search in Firebase a user by email.
到目前为止,我已经创建了我的第一个功能来通过电子邮件在 Firebase 中搜索用户。 Email is the Id of the document.
电子邮件是文档的 ID。 I've created a class as well to store the the user.
我还创建了一个类来存储用户。 You can see both codes here: My firebase database:
你可以在这里看到这两个代码:我的 firebase 数据库:
My class:
我的课:
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
}
My function:我的功能:
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)")
}
}
}
My main view:我的主要观点:
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!)
}
I'm allways reciving the same console error:我总是收到相同的控制台错误:
This is a quick check for debugging: lorenzorubiorivera@hotmail.com
这是调试的快速检查:lorenzorubiorivera@hotmail.com
ERROR ENCONTRADO USUARIO The data couldn't be read because it is missing.ERROR ENCONTRADO USUARIO 数据丢失,无法读取。
so I think the issue could be this variables in your decodable:所以我认为问题可能出在您的可解码变量中:
let contraseña: String
Translated It looks like this means password
so if you make this nullable, or just remove it, see if it starts working as your document does not contain a value for a key of password.翻译 看起来这意味着
password
,所以如果您将其设置为可为空,或者只是将其删除,请查看它是否开始工作,因为您的文档不包含密码键的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.