使用Swift 2

时间:2015-10-28 03:04:25

标签: ios parse-platform swift2

您好我正在尝试使用解析验证用户电子邮件,我一直在搜索整个网络几个小时并且一无所获。解析其他所有内容都很棒!但是当我尝试检查电子邮件验证是否属实时,我收到此错误:

致命错误:在解包可选值时意外发现nil

基本上我试图先检查一下,这样我就可以换到另一个viewController,我现在使用的代码就是这个...

if user.objectForKey("emailVerified")!.boolValue == true
{
    performSegueWithIdentifier("tarjetaCredito",sender: self)
}

我一直在尝试所有类型的代码,我总是得到同样的错误,任何帮助?我正在使用Xcode 7.0 beta 6

1 个答案:

答案 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