在Swift中使用segue传递Firestore的documentID

问题描述

我正在通过制作应用程序来学习Swift和firebase。在当前的Firestore中,我有一个数据库,其集合名称为Players,并且在集合内部,有一个文档带有auto-documentID和两个字段,例如name和email。像这样。 firestore image

我还使用Firebase Auth,因此,每当用户创建帐户时,我都会使用字段名称电子邮件将其电子邮件放入Firestore。

这是RegisterViewController的代码,其中用户使用电子邮件和密码注册帐户。

import UIKit
import Firebase

class RegisterViewController: UIViewController {


    @IBOutlet weak var emailTextField: UITextField!
    @IBOutlet weak var passwordTextField: UITextField!

    let db = Firestore.firestore()

    override func viewDidLoad() {
        super.viewDidLoad()

    }



    //MARK: - register a new account

    @IBAction func registerPressed(_ sender: UIButton) {
    
        if let email = emailTextField.text,let password = passwordTextField.text {
        
            Auth.auth().createUser(withEmail: email,password: password) { authResult,error in
            
            
                if error != nil {
                
                // some codes here
                
                
                } else {
                
                    // Add a new document with a generated ID
                    var ref: DocumentReference? = nil
                
                    ref = self.db.collection(K.FStore.playersCollection).addDocument(data: [K.FStore.emailField: email,K.FStore.nameField: ""]) { (error) in
                    
                        if let err = error {
                            print("There was an issue storing data to firestore. \(err)")
                        } else {
                            print("Document added with ID: \(ref!.documentID)")
                        }
                    }
                
                    // pass this data
                
                    func prepare(for segue: UIStoryboardSegue,sender: Any?) {
                        if segue.identifier == K.registerToHome {
                            let homeVC = segue.destination as! HomeViewController
                        
                            homeVC.documentID = ref?.documentID
                        }
                    }
                
                     self.performSegue(withIdentifier: K.registerToHome,sender: self)
                
                }
            
            }
        
        }
    }



}

我打算检查用户在下一个HomeViewController的文档名称字段中是否有名称,因此如果文档中名称字段的值为"",我想显示一条警报一个文本字段,以便用户可以添加其名称。但是,在HomeViewController中,我需要documentID,因为我将在HomeVC中使用此代码db.collection(K.FStore.playersCollection).document(documentID).getDocument,因此我想传递用户的documentID(在RegisterVC中,我可以将值获取为{{1} },因此我只想将值传递给HomeVC)。我尝试使用ref?.documentID,但无法传递值...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)