Swift Firebase。线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)
如果我是正确的:EXC_BAD_INSTRUCTION意味着应用程序崩溃,因为某些东西不存在。但是我得到的错误Swift Firebase。线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)
(Google上搜寻它,并试图让我的头一轮之后):
Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
当我试图和加载另一个视图。
这就是应用程序崩溃的功能:
func loginUserNeedsEmailVerification() {
let next = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
next.isUserLoggedInButNeedsEmail = true
self.present(next, animated: true, completion: nil)
}
我调用这个函数。从另外一个功能,像这样:
perform(#selector(loginUserNeedsEmailVerification), with: nil, afterDelay: 0)
即使该文件存在,我改变了!至?像这样:
let next = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController
next?.isUserLoggedInButNeedsEmail = true
self.present(next?, animated: true, completion: nil)
然后另一个错误在最后一行抛出:
Value of optional type is not unwrapped.
当我点击小修复它。它改变了代码这样:
self.present((next?)!, animated: true, completion: nil)
但随后,类似的错误也是如此:
optional chain has no effect
我在做什么错误,以及如何解决这个问题?
我只是在instantiateViewController, 期间遇到同样的问题,但它有点不同,因为我从另一个类调用该方法。
一种常见方式,看看有什么不顺心是storyboard
这样经过设置?
为!
: self.storyboard!.instantiateViewController
你可能会看到这个错误fatal error: unexpectedly found nil while unwrapping an Optional value
,
这意味着故事板被发现零。在我的情况下,我以某种方式无法获得UIStoryboard的现有参考(因为我从另一个类中调用)。
我找到解决的办法是首先重新申报UIStoryboard:let next = UIStoryboard(name: "Main", bundle:nil).instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController
我不知道为什么这样的工作,因为它仍然没有得到故事板的电流基准,但它为我工作。
你是否在任何类中声明了带有数据库引用的全局变量? – Dravidian
@Dravidian我不确定与呈现视图控制器有什么关系?是的,我有标准的FIRDatabase.database()。reference() – JamesG
@JamesG这次崩溃与Firebase无关。检查'storyboard'属性是否为'nil'或'instantiateViewController'方法返回的'UIViewController'实例为'nil' –