gpt4 book ai didi

swift - 您如何知道登录问题是模拟器造成的还是您的代码造成的?

转载 作者:行者123 更新时间:2023-11-30 10:33:05 26 4
gpt4 key购买 nike

我遇到的问题是,当用户登录主页后无法正确加载,但是当我停止模拟器并再次运行它时(用户仍然从上次运行中登录),页面显示正常。我想知道这个问题是出在模拟器还是我的代码中。

@IBAction func signInPressed(_ sender: Any) {
if let email = emailField.text, let password = passwordField.text {
Auth.auth().createUser(withEmail: email, password: password) { (user, error) in
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
if let userID = user?.uid {
KeychainWrapper.standard.set((userID), forKey: "uid")
self.performSegue(withIdentifier: "tohome", sender: nil) }
if error != nil{
print("Incorrect")
let alert = UIAlertController(title: "Error", message: "Incorrect Email or Password.", preferredStyle: UIAlertController.Style.alert)
let action = UIAlertAction(title: "Ok", style: .default, handler: nil)
alert.addAction(action)
self.present(alert, animated: true, completion: nil)
}
else {
if let userID = user?.uid {
KeychainWrapper.standard.set((userID), forKey: "uid")
self.performSegue(withIdentifier: "tohome", sender: nil)
let databaseRef = Database.database().reference() databaseRef.child("people").child(userID).child("users").setValue(self.emailField.text!)
databaseRef.child("people").child(userID).child("postID").setValue(userID)

最佳答案

建议您再次阅读使用电子邮件和密码登录的文档。代码中有很多错误。当您创建用户时,它会自动登录,您不必再次使用登录方法。其次,在将数据保存到数据库之前导航到新屏幕。当我们有用户默认值时,为什么要使用 KeychainWrapper?

首先创建一个模型类,以便您可以轻松访问数据和保存数据。

    class User {
var userId: String?
var email : String?
var password: String?
// All the other information you want

init(dictionary:[String: AnyObject]){
userId = dictionary["userId"] as? String // "this will be your firebase node //make no typos here you can create a constant if you want"
email = dictionary["email"] as? String
password = dictionary["password"] as? String
// All the other database
}
}

现在我们的模型类已经完成了,我们可以很容易地保存数据

    func createUserWithEmailAndPassword(){
if ( emailField.text != "" && passwordField.text != "" {
let email = emailField.text
let password = passwordField.text
Auth.auth().createUser(withEmail: email, password: password, completion: { (user, error) in
if error != nil {
// create error alert how you want.
return
}
let user = user?.user
let uid = user?.uid
let email = user?.email
let password = user?.password
// saving the user data locally
let userDefaults = UserDefaults
userDefaults.standard.set(uid, forKey: "user_uid")
userDefaults.standard.set(email, forKey: "user_email")
// etc etc
// after that we will be saving this user database to firebase database
// calling firebase save user function here which we will create below
self.registerUserToDatabase(uid: uid!, email: email!, password: password!)
}
}


func registerUserToDatabase(uid: String, email: String, password: String){
let userDb = Database.database().reference.child("people").child("users").child(uid)
// Make sure the key value in the below dictionary matches the User model class you var you made
let userDictionary = ["userId": uid, "email": email,"password": password] as [String: AnyObject]

userDb.updateChildValues(userDictionary) {(err ,userDb) in
if err != nil {
// alert view for error
}
let users = User(dictionary: userDictionary)
// Below we will navigate to to home screen or which ever screen you want
self.navigateToApp()
}
}

创建导航到 Controller 功能

func navigateToApp(){
// performe seque method
}

//PS GitHub 格式化程序有什么问题

关于swift - 您如何知道登录问题是模拟器造成的还是您的代码造成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58672654/

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