为什么我的信息不写到数据库,唯一有效的信息是signUpViewController

时间:2019-07-17 04:24:47

标签: swift firebase-realtime-database

我似乎无法弄清楚为什么未写入数据库。它可以在SignUpViewController中工作,在这里我可以成功注册新的电子邮件和密码,并将其实时写入数据库。但是,当我选择使用UserNameViewController和ProfileSetUpViewController并尝试将数据输入到这两者中时,数据只是没有添加到数据库中。我没有尝试从列表视图添加数据,因为在此之前也没有任何作用,因此我想尝试找出问题所在。

我试图以所有可能的方式重组这些类。使用变量并使用不同的方法调用,但是似乎没有任何效果。就像我不知道该怎么办。它不会引发任何异常或错误,只是不会发送到数据库。

//SignUpViewController

import UIKit
import Firebase
import FirebaseCore
import FirebaseDatabase
import FirebaseAuth

class SignUpViewController: UIViewController {

    @IBOutlet weak var email: UITextField!
    @IBOutlet weak var password: UITextField!
    @IBOutlet weak var signUp: UIBarButtonItem!
    @IBOutlet weak var errorMessage: AnyObject!

    override func viewDidLoad() {
        super.viewDidLoad()
        signUp.isEnabled = false
    }

    @IBAction func didTapCancel(_ sender: UIButton) {
        dismiss(animated: false, completion: nil)
    }

    @IBAction func didTapSignUp(_ sender: AnyObject) {
        signUp.isEnabled = false

        Auth.auth().createUser(withEmail: self.email.text!, password: self.password.text!, completion: {(user, error) in
            if(error.self != nil){
                if(error!.localizedDescription == "17999" ){
                    self.errorMessage = "Invalid email" as AnyObject
                }
                else{
                    self.errorMessage = "sot" as AnyObject
                }
            }

            else{
                self.errorMessage = "Success" as Any as AnyObject
               Auth.auth().signIn(withEmail: self.email.text!, password: self.password.text!, completion: {(user, error) in
                    if(error.self == nil){
                    }})
            }

            let ref = Database.database().self.reference()
            ref.child("Users").childByAutoId().child("Info").child("email").setValue(self.email.text)
            ref.child("Users").childByAutoId().child("Info").child("password").setValue(self.password.text)

            self.performSegue(withIdentifier: "profileSegue", sender: nil)
        })

    }
    @IBAction func textDidChange(_ sender: UITextField) {

        if(email.text!.count > 0 &&
            password.text!.count  > 0){
            signUp.isEnabled = true
        }
        else{
            signUp.isEnabled = false
        }

    }

}

UserNameViewController

import UIKit
import FirebaseAuth
import FirebaseDatabase

class UserNameViewController: (UIViewController) {

    @IBOutlet weak var fullName: UITextField!
    @IBOutlet weak var userName: UITextField!
    @IBOutlet weak var startGrinding: UIBarButtonItem!
    @IBOutlet weak var errorMessage: UILabel!

    public let id = Auth.auth().self.currentUser!.uid

    @IBAction func didTapStartGrinding(_ sender: AnyObject) {
        let ref = Database.database().self.reference()

        ref.child("Users").child(id).child("Info").child("full 
         name").setValue(self.fullName.text)

         ref.child("Users").child(id).child("Info").child("user 
         name").setValue(self.userName.text)
        self.performSegue(withIdentifier: "profBuilder", sender: nil)
    }

    @IBAction func didTapBack(_ sender: UIButton) {
        dismiss(animated: true, completion: nil)
    }    
}

ProfileSetUpViewController

import UIKit
import FirebaseAuth
import FirebaseDatabase

class ProfileSetUpTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    public var gender:String?
    public var date:String?
    private var data: [String] = ["Running ?‍♂️", "Biking ?‍♀️", "Lifting ?️‍♂️", "Swimming ?‍♂️", "Walking ?‍♀️", "Sports ?",
    "Meditation ?‍♀️", "Being a healthy human being ?"]

    @IBOutlet weak var birthDate: UIDatePicker!
    @IBOutlet weak var tableView: UITableView!
    @IBOutlet weak var segementedControl: UISegmentedControl!
    @IBAction func didTapSegmentedControl(_ sender: Any) {
        switch segementedControl.selectedSegmentIndex{
        case 0:
            gender = "male"
        case 1:
            gender = "female"
            default:
                break

        }
    }

    @IBAction func didChangeBirthDate(_ sender: Any) {
        date = birthDate.date.description
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        tableView.delegate = self

        tableView.register(UINib(nibName: "ActTableViewCell", bundle: Bundle.main), forCellReuseIdentifier: "Cell")
    }

    // MARK: - Table view data source
 func numberOfSections(in tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return data.count
    }

     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

        let text = data[indexPath.row]
        cell.textLabel?.text = text

        // Configure the cell...

        return cell
    }


    @IBAction func didTapContinue(_ sender: Any) {
        let id = Auth.auth().self.currentUser!.uid
        let ref = Database.database().self.reference()
        ref.child("Users").child(id).child("Info").child("gender").setValue(gender.self)
        ref.child("Users").child(id).child("Info").child("age").setValue(date.self)

        self.performSegue(withIdentifier: "HomeSegue", sender: nil)
    }
}

我希望输出能够输出用户-> uid->信息->变量名->将数据作为JSON输入数据库。

0 个答案:

没有答案