Swift:非零可选值引发一个零例外
我有一个字典,值,我打电话来填充一个字段
if let userdata: NSDictionary = self.fbdata { println(userdata["email"]) // print Optional(email@domain.com) vc.email.text = userdata["email"] as? String ?? "" // raise a nil error }
如代码中所示,userdata [“email”]存在并且有一个由println打印的值,无论如何在下一行我有一个可选的exceptionexception(甚至不使用默认的“”值)
我不明白我在这里做错了什么
这是一个文本字段的出口,但它似乎不preparefor在prepareForSegue函数
这个评论揭示了你的错误观念。 事情发生在一个顺序,我在这里讨论: https : //stackoverflow.com/a/29552710/341994
因此,通过devise, prepareForSegue
发生在新的视图控制器有其视图或其出口之前。 相反,它的网点连接的第一个时刻是它自己的viewDidLoad
,这是后来。
然而,你真正的错误是更深层次的。 一个视图控制器没有业务设置或与另一个视图控制器的网点交谈,从而操纵其接口。 相反,设置的东西,使目标视图控制器有一个普通的属性 ,你可以设置。 在viewDidLoad
,该视图控制器会检查该属性,检索该值,并通过其出口设置其自己的接口。
所以,总结一下: prepareForSegue
是你初始化新视图控制器的机会。 但就是这些。 这个新的视图控制器稍后将控制它自己的视图 – 顾名思义! 它会从它自己的viewDidLoad
和更高版本开始。