不知道這是一個錯誤還是一個預期的功能。Swift錯誤鑄造問題
要創建具有火力地堡的電子郵件和密碼的用戶,我一直在使用下面的代碼:
FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in
if let error = error {
guard let error = error as? FIRAuthErrorCode else { return } // ALWAYS FAILS
...code...
}
...code...
}
在不能被強制轉換爲FIRAuthErrorCode
方法完成處理的故障參數;它總是失敗。這是一個錯誤,還是預期的行爲?
編輯:我知道錯誤代碼可以用來區分不同類型的FIRAuthErrorCode
錯誤。這只是不可讀的,並且它對於完成處理程序中的錯誤參數不是FIRAuthErrorCode
類型沒什麼意義。可以找到FIRAuthErrorCode
的案例和錯誤代碼here。
您將無法編譯,因爲它會導致條件綁定錯誤。使用'as!'強制downcast總是返回一個非可選值,所以使用'guard let'沒有意義。但我確實測試過'let error = error as! FIRAuthErrorCode'之前,它產生了以下錯誤:'無法將類型'NSError'(0x1149070b8)的值轉換爲'__C.FIRAuthErrorCode'(0x104e35718)。' – hvasam