您好我正在尝试使用解析验证用户电子邮件,我一直在搜索整个网络几个小时并且一无所获。解析其他所有内容都很棒!但是当我尝试检查电子邮件验证是否属实时,我收到此错误:
致命错误:在解包可选值时意外发现nil
基本上我试图先检查一下,这样我就可以换到另一个viewController,我现在使用的代码就是这个...
if user.objectForKey("emailVerified")!.boolValue == true
{
performSegueWithIdentifier("tarjetaCredito",sender: self)
}
我一直在尝试所有类型的代码,我总是得到同样的错误,任何帮助?我正在使用Xcode 7.0 beta 6
答案 0 :(得分:1)
当您在Swift中看到“意外发现的nil”时,您可以将其追踪到感叹号。 (无论是裸!
还是as!
还是try!
,感叹号基本上都会说,“嘿编译器,我知道你认为错误可以发生在这里,但我知道它永远不会发生,所以不要强迫我处理错误案例。“)
在您的代码中,!
就在这里:
if user.objectForKey("emailVerified")!.boolValue == true
⬆︎
...这意味着表达式user.objectForKey("emailVerified")
的结果必须为零。弄清楚为什么表达式为零,你会得到答案。
如果user
是一个词典,那么键"emailVerified"
可能没有值,也许您使用了错误的键字符串。 (旁白:您可以改为user["emailVerified"]
,具体取决于user
的类型。)
无论原因是什么,在崩溃前打印出user
的值可能有助于您诊断问题:
print("----------> user = ", user)
if user.objectForKey("emailVerified")!.boolValue == true
...
一般来说,Swift通常很好的做法是避免使用!
- 或者至少仔细考虑一下你使用它的原因。如果您确定有时候该表达式有效,则评估为nil - 例如,如果电子邮件尚未经过验证,则可能为零 - 那么您可以使用?
代替;例如:
if user.objectForKey("emailVerified")?.boolValue == true