为啥我的应用程序在尝试登录时崩溃(firebase 登录)
Posted
技术标签:
【中文标题】为啥我的应用程序在尝试登录时崩溃(firebase 登录)【英文标题】:Why does my app crash when trying to login (firebase login)为什么我的应用程序在尝试登录时崩溃(firebase 登录) 【发布时间】:2021-05-20 14:44:54 【问题描述】:错误:由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[Stylor.LoginViewController LoginButton:]: 无法识别的选择器发送到实例 0x147d0a8f0'
代码:
import UIKit
import Firebase
class LoginViewController: UIViewController
@IBOutlet var emailTextField: UITextField!
@IBOutlet var passwordTextField: UITextField!
override func viewDidLoad()
super.viewDidLoad()
// Hide Keyboard (G:UIViewController - F:dismissKeyboard.swift)
self.hideKeyboardWhenTapped()
self.hideKeyboardOnSwipeDown()
self.hideKeyboardOnSwipeUp()
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// MARK: Disable Rotation of UIViewController
override open var shouldAutorotate: Bool
return false
@IBAction func LoginButtonTapped(_ sender: Any)
// Validate the input
guard let email = emailTextField.text, email != "",
let password = passwordTextField.text, password != "" else
let alertController = UIAlertController(title: "Login Error", message: "Login Error", preferredStyle: .alert)
let okayAction = UIAlertAction(title: "Ok", style: .cancel, handler: nil)
alertController.addAction(okayAction)
present(alertController, animated: true, completion: nil)
return
// Register the user account on Firebase
Auth.auth().signIn(withEmail: email, password: password, completion: (user, error) in
if let error = error
let alertController = UIAlertController(title: "Login Error", message: error.localizedDescription, preferredStyle: .alert)
let okayAction = UIAlertAction(title: "Ok", style: .cancel, handler: nil)
alertController.addAction(okayAction)
self.present(alertController, animated: true, completion: nil)
return
// Dismiss Keyboard
self.view.endEditing(true)
// Present the MainTabBarViewController
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(identifier: "MainTabBarViewController")
vc.modalPresentationStyle = .overFullScreen
self.present(vc, animated: true)
)
当我使用 firebase 创建用户时,它可以正常工作,但是当我尝试使用相同的凭据登录时,它会崩溃并在上面给出错误。感谢您的帮助,祝您有美好的一天。
【问题讨论】:
【参考方案1】:替换
@IBAction func LoginButtonTapped(_ sender: Any)
到
@IBAction func LoginButton(_ sender: Any)
【讨论】:
感谢您的回答。我更改了它,但它仍然给我同样的错误:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[Stylor.LoginViewController LoginButtonTapped:]:无法识别的选择器发送到实例 0x14ae0a340”。我将其更改为 LoginButton 但错误仍然显示 LoginButtonTapped。 您有 2 个与您的按钮相关联的操作LoginButton
和 LoginButtonTapped
请删除其中 1 个并保留另一个与 IB 中相同的名称以在代码中以上是关于为啥我的应用程序在尝试登录时崩溃(firebase 登录)的主要内容,如果未能解决你的问题,请参考以下文章
dataSnapshot 函数不起作用 - 函数调用时应用程序崩溃
为啥我必须在用户登录后使用 firebase 对用户进行身份验证?
React/Firebase 托管:为啥在页面刷新时要求用户登录?