为啥我的应用程序在尝试登录时崩溃(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 登录)的主要内容,如果未能解决你的问题,请参考以下文章

iOS Firebase 登录

dataSnapshot 函数不起作用 - 函数调用时应用程序崩溃

为啥我必须在用户登录后使用 firebase 对用户进行身份验证?

React/Firebase 托管:为啥在页面刷新时要求用户登录?

当我尝试在 openCV 中反转 UIImage 时,为啥我的应用程序会崩溃?

Dexguard 导致 Firebase 崩溃