Ios FireBase PhoneAuth线程1:致命错误:在展开可选值时意外发现nil

Ios FireBase PhoneAuth线程1:致命错误:在展开可选值时意外发现nil,ios,swift,Ios,Swift,我试图从firebase设置PhoneAuth,但我是新的,我只是不知道为什么会发生 这是代码的一部分 let credential: PhoneAuthCredential = PhoneAuthProvider.provider().credential(withVerificationID: defaults.string(forKey: "AuthVID")!, verificationCode: self.codeInputField.text!) 我认为问题在这里,但我不知道

我试图从firebase设置PhoneAuth,但我是新的,我只是不知道为什么会发生

这是代码的一部分

 let credential: PhoneAuthCredential = PhoneAuthProvider.provider().credential(withVerificationID: defaults.string(forKey: "AuthVID")!, verificationCode: self.codeInputField.text!)

我认为问题在这里,但我不知道如何解决它

Printing description of credential:(PhoneAuthCredential) credential = <variable not available>
打印凭证说明:(PhoneAuthCredential)凭证=

谢谢

下面这行似乎有问题,因为您正在强制展开

let credential: PhoneAuthCredential = PhoneAuthProvider.provider().credential(withVerificationID: defaults.string(forKey: "AuthVID")!, verificationCode: self.codeInputField.text!)
原因

可能是您的
AuthVID
为nil(在
UserDefuilt
中没有带密钥AuthID的字符串)或
self。codeInputField
未连接到
outlet

解决方案

提供默认值或使用可选链接

if let strAuthVID = defaults.string(forKey: "AuthVID"), let code = self.codeInputField.text
{
let credential: PhoneAuthCredential = PhoneAuthProvider.provider().credential(withVerificationID:strAuthVID, verificationCode: code)

}

“defaults.string(forKey:“AuthVID”)!”请检查它是否为“nil”,不要强制展开此错误表明您指定的变量获得了nil值。在中,让凭证没有分配值。在这里,您可以为指定的变量指定默认值,然后打印。谢谢您的回复,我按照您所说的做了,这个if语句不成立。没有任何错误,我没有得到任何错误。所以我添加了else语句,比如
if let-strAuthVID=defaults.string(forKey:“AuthVID”),let-code=self.codeInputField.text{let-credential:PhoneAuthCredential=PhoneAuthProvider.provider().credential(withVerificationID:strAuthVID,verificationCode:code)}else{-print(“不工作”)
,当我点击按钮时,它的打印“不工作”是的,因为您得到的是
nil
值,它可能是
strAuthVID
code
调试,然后找出哪个是
nil
。请看我写的可能原因的答案。谢谢你的帮助!我会找出我在哪里以及为什么得到零价值我不知道我怎么会犯同样的错误。但在浪费了这么多时间之后,我找到了你的答案。非常感谢!!