我一直在练习登录页面并使用Firebase创建帐户。我成功注册了一个用户并将用户保存在firebase中。现在,我正在尝试在创建帐户时将名字和姓氏保存到用户ID。我已经尝试过查看其他SO的答案,但似乎仍然无法让它发挥作用。
我一直在阅读多个教程,并尝试了多次展开尝试,但仍然遇到此错误。下面是我的视图控制器:
import UIKit
import Firebase
class ViewController: UIViewController {
var ref: DatabaseReference!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var firstNameField: UITextField!
@IBOutlet weak var lastNameField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
var ref = Database.database().reference()
}
@IBAction func createAccountTapped(_ sender: Any) {
if let email = emailTextField.text, let password = passwordTextField.text, let firstName = firstNameField.text, let lastName = lastNameField.text {
Auth.auth().createUser(withEmail: email, password: password ) { (user, error) in
// ...
if let firebaseError = error {
print(firebaseError.localizedDescription)
return
//add popup later
}
let userId = user!.uid
self.ref.child("users").child(userId).setValue(["firstName": firstName])
print("User registered in Firebase with a userId of " + user!.uid)
}
}
}
我哪里错了?我以为我在顶部打开变量,用'if let'。我试着单独展开它们,但是仍然有同样的错误。有点失落。
答案 0 :(得分:4)
在viewDidLoad()
中,您可以致电
var ref = Database.database().reference()
但它应该是
ref = Database.database().reference()
Swift将其视为您在viewDidLoad()
范围内声明的另一个变量,因此当您使用ref
时,它仍然没有任何价值。
答案 1 :(得分:2)
请从
更改数据库参考.fixed-progress{
width: 100% !important;
}
.fixed{
position: absolute;
z-index: 999999999999;
left: 0px;
line-height: 1px !important;
}
.fixed-controls{
max-width: 100%;
}
.video-js{
position: absolute;
}
.wrapper-video{
position: relative;
}
到
var ref: DatabaseReference!
然后再做
var databaseRef = Database.database().reference()
或在viewDidLoad中执行
self.child("users").child(userId).setValue(["firstName": firstName])
发生此错误是因为您没有初始化数据库参考
这应该没有任何问题
self.ref = Database.database().reference()