gpt4 book ai didi

swift - 创建新用户帐户后将用户数据写入 Firebase

转载 作者:行者123 更新时间:2023-11-28 08:25:04 30 4
gpt4 key购买 nike

我目前正尝试在使用创建用户函数 FIRAuth.auth()?.createUser 后将用户信息写入 firebase 的数据库

在此函数下,我尝试像这样将数据插入数据库:

    FIRAuth.auth()?.createUser(withEmail: self.emailField.text!, password: self.passwordField.text!) { (user, error) in

if error == nil

{
let email = self.emailField.text
let firstName = self.firstnameField.text
let lastName = self.lastnameField.text


self.ref.child((user?.uid)!).setValue(["firstName": firstName,"lastName": lastName,"email": email])
self.performSegue(withIdentifier: "createaccountLandingPage", sender: sender)
}

同样重要的是,在我的 View Controller 下,我使用以下方法创建了对数据库的引用:

var ref = FIRDatabase.database().reference().child("users")//根数据库

我的网点都是正确的,但我得到这个错误:

Thread 1: signal SIGABRT

对我可能做错的事情有什么建议吗?

编辑** 这是我在注册 View Controller 中的所有代码

import UIKit
import Firebase
import FirebaseDatabase

class CreateAccountViewController: UIViewController {

var ref = FIRDatabase.database().reference().child("users") //root database

@IBOutlet weak var firstnameField: UITextField!
@IBOutlet weak var lastnameField: UITextField!
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var passwordField: UITextField!
@IBOutlet weak var confirmpasswordField: UITextField!
@IBOutlet weak var createAccountButton: UIButton!


override func viewDidLoad() {

super.viewDidLoad()

if (FIRAuth.auth()?.currentUser) != nil
{

}
else
{

}

// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

@IBAction func createAccountAction(_ sender: AnyObject)

{

if self.confirmpasswordField.text != self.passwordField.text

{

}

else

{
FIRAuth.auth()?.createUser(withEmail: self.emailField.text!, password: self.passwordField.text!) { (user, error) in

if error == nil

{

let user = FIRAuth.auth()?.currentUser.uid
let email = self.emailField.text
let firstName = self.firstnameField.text
let lastName = self.lastnameField.text

self.ref.child("users").child("\(user)").setValue(["firstName": firstName,"lastName": lastName,"email": email])


self.performSegue(withIdentifier: "createaccountLandingPage", sender: sender)

}

else

{
let alertController = UIAlertController(title: "Oops!", message: error?.localizedDescription, preferredStyle: .alert)

let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alertController.addAction(defaultAction)

self.present(alertController, animated: true, completion: nil)

}
}
}
}

EDIT*** 这是错误的截图

编辑**** 这是我的 podfile 的屏幕截图,更新后我在终端中没有收到任何错误。

编辑*****控制台截图。

1stScreenshotConsole 2ndScreenshotConsole

最佳答案

您必须像这样创建对数据库的引用

Var ref: FIRDatabaseReference!

然后像这样在 viewDidLoad 中初始化数据库

Ref = FIRDatabase.database().reference()

我在下面写了整个代码,请原谅语法错误,因为我是在 iPad 上回答你的问题。

import UIKit
import Firebase
import FirebaseDatabase

class CreateAccountViewController: UIViewController {

var ref = FIRDatabaseReference! //create a reference for your database


@IBOutlet weak var firstnameField: UITextField!
@IBOutlet weak var lastnameField: UITextField!
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var passwordField: UITextField!
@IBOutlet weak var confirmpasswordField: UITextField!
@IBOutlet weak var createAccountButton: UIButton!


override func viewDidLoad() {

super.viewDidLoad()

//initialize your database
ref = FIRDatabase.database().reference()
// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

@IBAction func createAccountAction(_ sender: AnyObject)

{

if self.confirmpasswordField.text != self.passwordField.text

{

}

else

{
FIRAuth.auth()?.createUser(withEmail: self.emailField.text!, password: self.passwordField.text!) { (user, error) in

if error == nil

{
let user = FIRAuth.auth()?.currentUser.uid //get the users UID after registering
let email = self.emailField.text
let firstName = self.firstnameField.text
let lastName = self.lastnameField.text

self.ref.child("users").child("\(user!)").setValue(["firstName": "\(firstName!)", "lastName": "\(lastName!)", "email": "\(email!)"])

self.performSegue(withIdentifier: "createaccountLandingPage", sender: sender)

}

else

{
let alertController = UIAlertController(title: "Oops!", message: error?.localizedDescription, preferredStyle: .alert)

let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alertController.addAction(defaultAction)

self.present(alertController, animated: true, completion: nil)

}
}
}
}

关于swift - 创建新用户帐户后将用户数据写入 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40275873/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com