当前位置: 首页 > 面试题库 >

处理新Firebase和Swift中的错误

艾泰
2023-03-14
问题内容

我正在尝试使用swift和firebase在iOS项目中创建用户按钮时添加错误处理:

这是按钮的代码:

     @IBAction func Register(sender: AnyObject) {

    if NameTF.text == "" || EmailTF.text == "" || PasswordTF.text == "" || RePasswordTF == "" || PhoneTF.text == "" || CityTF.text == ""
    {
        let alert = UIAlertController(title: "عذرًا", message:"يجب عليك ملىء كل الحقول المطلوبة", preferredStyle: .Alert)
        alert.addAction(UIAlertAction(title: "نعم", style: .Default) { _ in })
        self.presentViewController(alert, animated: true){}

    } else {

        if PasswordTF.text != RePasswordTF.text {
            let alert = UIAlertController(title: "عذرًا", message:"كلمتي المرور غير متطابقتين", preferredStyle: .Alert)
            alert.addAction(UIAlertAction(title: "نعم", style: .Default) { _ in })
            self.presentViewController(alert, animated: true){}

        } else {


            FIRAuth.auth()?.createUserWithEmail(EmailTF.text!, password: PasswordTF.text!, completion: { user, error in
                print(error)

                if error != nil {

                    let errorCode = FIRAuthErrorNameKey

                    switch errorCode {
                    case "FIRAuthErrorCodeEmailAlreadyInUse":
                        let alert = UIAlertController(title: "عذرًا", message:"الإيميل مستخدم", preferredStyle: .Alert)
                        alert.addAction(UIAlertAction(title: "نعم", style: .Default) { _ in })
                        self.presentViewController(alert, animated: true){}

                    case "FIRAuthErrorCodeUserNotFound":
                        let alert = UIAlertController(title: "عذرًا", message:"المستخدم غير موجود", preferredStyle: .Alert)
                        alert.addAction(UIAlertAction(title: "نعم", style: .Default) { _ in })
                        self.presentViewController(alert, animated: true){}

                    case "FIRAuthErrorCodeInvalidEmail":
                        let alert = UIAlertController(title: "عذرًا", message:"الإيميل غير صحيح", preferredStyle: .Alert)
                        alert.addAction(UIAlertAction(title: "نعم", style: .Default) { _ in })
                        self.presentViewController(alert, animated: true){}

                    case "FIRAuthErrorCodeNetworkError":
                        let alert = UIAlertController(title: "عذرًا", message:"خطأ في الاتصال بالانترنت", preferredStyle: .Alert)
                        alert.addAction(UIAlertAction(title: "نعم", style: .Default) { _ in })
                        self.presentViewController(alert, animated: true){}

                    default:
                        let alert = UIAlertController(title: "عذرًا", message:"خطأ غير معروف", preferredStyle: .Alert)
                        alert.addAction(UIAlertAction(title: "نعم", style: .Default) { _ in })
                        self.presentViewController(alert, animated: true){}



                    }


                } else {

                    FIRAuth.auth()?.signInWithEmail(self.EmailTF.text!, password: self.PasswordTF.text!, completion: { (user: FIRUser?, error: NSError?) in
                        if let error = error {
                            print(error.localizedDescription)
                        } else {

                           self.ref.child("UserProfile").child(user!.uid).setValue([
                                "email": self.EmailTF.text!,
                                "name" : self.NameTF.text!,
                                "phone": self.PhoneTF.text!,
                                "city" : self.CityTF.text!,
                                ])
                            print("Sucess")
                          //  self.performSegueWithIdentifier("SignUp", sender: nil)

                        }
                    })

                } //else
            })

        } //Big else


    } //Big Big else
}


}//end of

我不确定switch语句中错误的语法是否正确!

因为当我在模拟器中对其进行测试时,它始终会给我提供默认情况,这是未知错误!+我在文档中找不到语法:https
:
//firebase.google.com/docs/auth/ios/errors

因此,使用新的firebase和swift添加错误处理的正确语法是什么?


问题答案:

实际上,我已经为此苦苦挣扎了很长时间,并且发现了问题所在。我已经尝试过上面答案中发布的代码,并且error.code行给了我一个错误。它确实与error._code一起工作。换句话说,对Paul的原始答案稍加修改即可。这是我的最终代码(不过,我将针对所有错误对其进行编辑):

if let errCode = FIRAuthErrorCode(rawValue: error!._code) {

    switch errCode {
        case .errorCodeInvalidEmail:
            print("invalid email")
        case .errorCodeEmailAlreadyInUse:
            print("in use")
        default:
            print("Create User Error: \(error)")
    }    
}


 类似资料:
  • 问题内容: 我对Swift的了解还不够多,但是我注意到的一件事是没有例外。那么如何在Swift中进行错误处理呢?有没有人发现任何与错误处理相关的信息? 问题答案: 斯威夫特2&3 Swift 2中的情况有所变化,因为有了新的错误处理机制,该机制与异常有些相似,但在细节上有所不同。 1.指示错误可能性 如果函数/方法想要表明它可能抛出错误,则应包含这样的关键字 注意:函数没有实际抛出的错误类型的规范

  • 我完全知道Swift没有一个try/catch机制来捕捉异常(好的,Swift2.0现在支持它们)。我还了解到,许多API方法返回一个NSError,如果出现问题,该NSError将被一个错误对象填充。所以请不要向我提出这个问题:Swift语言中的错误处理 但这仍然不能解释如何对您自己代码中的运行时错误做出反应,比如数组越界访问或强制展开一个为nil的可选值。例如: 或 每个程序员都会偶尔犯这样的

  • 我搜索并尝试了我能找到的一切,但无法解决这个问题,我甚至试图使用简单的更新文档,但我得到同样的错误。 编辑只有在所有操作都可以成功执行的情况下,才希望批处理执行时应该做什么。示例:如果我对确实存在的文档进行了前两次更新,它们将按-1更新这些值,然后对不存在的文档进行两次删除操作,这不会导致我的函数出错(值将按-1更新,删除不会执行任何操作) 但是,如果我首先对不存在的文档进行两次删除操作,整个函数

  • 问题内容: 我遇到了我不知道的代码问题。安装Xcode 7 Beta并将Swift代码转换为Swift 2之后 码: 屏幕截图: 问题答案: 从Swift 2开始,将产生错误的Cocoa方法转换为引发错误的Swift函数。 而不是 Swift 1.x 中的可选返回值和错误参数: 在 Swift 2中, 该方法现在返回非可选值,并在错误情况下引发错误,必须使用try-catch处理: 有关更多信息,

  • 问题内容: 我知道可可中有一个UncaughtExceptionHandler,但是我正在为Swift寻找相同的东西。即,每当应用程序中有任何错误/异常由于任何错误而未在本地捕获时,它应该一直冒泡到顶级应用程序对象,在那里我应该能够妥善处理它并适当地响应用户。 Android有它。Flex有它。Java有它。想知道为什么Swift缺少此关键功能。 问题答案: Swift没有机制来捕获所有任意的运行

  • 本文向大家介绍浅谈PHP中的错误处理和异常处理,包括了浅谈PHP中的错误处理和异常处理的使用技巧和注意事项,需要的朋友参考一下 错误处理:          1. 语法错误     2. 运行时的错误     3. 逻辑错误   错误报告:                  错误E_ERROR         警告E_WARNING         注意E_NOTICE 开发阶段:开发时输出所有的