我似乎无法弄清楚为什么未写入数据库。它可以在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输入数据库。