繁体   English   中英

如何使用 swift 更新 firebase 中的数据?

[英]How to update data in the firebase using swift?

我已经注册并登录,它可以工作。 但现在我想编辑 Firebase 中的数据? 谁能帮我怎么做? 谢谢这里是 GUI,当我单击更新时,它将更新到数据库

这是我的火力基地

这里是注册视图 Controller

import UIKit    
import FirebaseAuth    
import FirebaseFirestore    

class SignupViewController: UIViewController {

    @IBOutlet weak var FirstNameTextfield: UITextField!

    @IBOutlet weak var LastNameTextfield: UITextField!        

    @IBOutlet weak var EmailTextField: UITextField!

    @IBOutlet weak var PasswordTextfield: UITextField!

    @IBOutlet weak var SignUpButton: UIButton!

    @IBOutlet weak var ErrorLabel: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        setUpElements()
    }
    func setUpElements(){
        ErrorLabel.alpha = 0
    }

    func validateFields()->String? {

        //check that all the fields are fill

        if FirstNameTextfield.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" || LastNameTextfield.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" || EmailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" || PasswordTextfield.text?.trimmingCharacters(in: .whitespacesAndNewlines) == ""
            {
            return "Please fill up all the Fields"
        }

        //check the password if the password is secure
        let cleanedPassword = PasswordTextfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)

        if Utilities.isPasswordValid(cleanedPassword) == false{
            return "Please enter at least 8 characters, with a number and characteristic symbol"
        }

        return nil
    }


    @IBAction func SignUpTap(_ sender: Any) {

        let error = validateFields()

        if error != nil{
            showError(message: error!)
        }
        else {
            let FirstName = FirstNameTextfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)
            let LastName = LastNameTextfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)
            let Email = EmailTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
            let Password = PasswordTextfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)


            Auth.auth().createUser(withEmail: Email, password: Password) { (result, err) in

                if err != nil{
                    self.showError(message: "Error creating the user")
                }
                else {

                let db = Firestore.firestore()


                    db.collection("users").addDocument(data:["FirstName":FirstName, "LastName":LastName, "uid": result!.user.uid]) { (Error) in

                        if error != nil{
                            self.showError(message: "Cannot saving user data" )
                        }
                    }

                    self.transitionToHomePage()

                }
            }
        }            
    }

    func showError( message:String){
        ErrorLabel.text = message
        ErrorLabel.alpha = 1
    }

    func transitionToHomePage(){
         let TabHomeViewController = storyboard?.instantiateViewController(identifier: Constrants.Storyboard.TabHomeViewController) as? TabHomeViewController

        view.window?.rootViewController = TabHomeViewController
        view.window?.makeKeyAndVisible()
    }
}

这是我的登录VC

@IBAction func LoginTap(_ sender: Any) {

        let Email = EmailTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines)
        let Password = PasswordTextfield.text!.trimmingCharacters(in: .whitespacesAndNewlines)
        Auth.auth().signIn(withEmail: Email, password: Password) { (result, error) in

            if error != nil{
                self.ErrorLabel.text = error!.localizedDescription
                self.ErrorLabel.alpha = 1
            }
            else{
                let TabHomeViewController = self.storyboard?.instantiateViewController(identifier: Constrants.Storyboard.TabHomeViewController) as? UITabBarController

                self.view.window?.rootViewController = TabHomeViewController
                self.view.window?.makeKeyAndVisible()
            }

这里是我的帐户视图 Controller

import UIKit

import FirebaseAuth

import FirebaseFirestore

import Firebase

class AccountViewController: UIViewController {

    @IBOutlet weak var FNameTextField: UITextField!


    @IBOutlet weak var LNameTextField: UITextField!


    @IBOutlet weak var EmailTextField: UITextField!


    @IBOutlet weak var PasswordTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

    }


    @IBAction func logoutbutton(_ sender: Any) {
        do{
            try Auth.auth().signOut()
            performSegue(withIdentifier: "signout", sender: nil)
        }
        catch{
            print(error)
        }
    } 
}

您可以使用这个 function:

func updateFirestoreUserProfile(uid: String, data: [String:Any]) {
    Firestore.firestore().collection("users").document(uid).updateData(data) { err in
        if let err = err {
            print("Error updating document: \(err) ")
        }
        else {
            print("Document successfully updated")
        }
    }
}

您可以像这样使用 function:

let data = [
        "FirstName": name,
        "LastName": surname
    ]

updateFirestoreUserProfile(uid: user.uid, data: data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM