Swift : 非 nil 可选值引发 nil 异常
Swift : non-nil optional value raising a nil exception
我有一本字典,里面有值,我调用它来填充一个字段
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 打印,无论如何在下一行我引发了一个 nil 可选异常(甚至是默认的“”值未使用)
我看不出我做错了什么
it's an outlet to a textfield but it seems to not unwrap in the prepareForSegue function
该评论揭示了您的误解。事情按顺序发生,我在这里讨论:
因此,根据设计,prepareForSegue
发生在 之前 新视图控制器具有其视图 - 或它的插座。反之,它的网点连接的第一个时刻是它自己的viewDidLoad
,就是后来的
不过,你真正的错误更严重。一个视图控制器 没有业务 设置或与另一个视图控制器的插座对话,从而操纵其界面。相反,进行设置以便目标视图控制器具有您可以设置的普通 属性 。在 viewDidLoad
中,该视图控制器检查 属性,检索值,并通过其出口设置其 自己的 接口。
因此,总结一下:prepareForSegue
是您初始化新视图控制器的机会。但仅此而已。新的视图控制器稍后将控制它自己的视图——顾名思义!它会从自己的 viewDidLoad
开始并在以后执行此操作。
我有一本字典,里面有值,我调用它来填充一个字段
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 打印,无论如何在下一行我引发了一个 nil 可选异常(甚至是默认的“”值未使用)
我看不出我做错了什么
it's an outlet to a textfield but it seems to not unwrap in the prepareForSegue function
该评论揭示了您的误解。事情按顺序发生,我在这里讨论:
因此,根据设计,prepareForSegue
发生在 之前 新视图控制器具有其视图 - 或它的插座。反之,它的网点连接的第一个时刻是它自己的viewDidLoad
,就是后来的
不过,你真正的错误更严重。一个视图控制器 没有业务 设置或与另一个视图控制器的插座对话,从而操纵其界面。相反,进行设置以便目标视图控制器具有您可以设置的普通 属性 。在 viewDidLoad
中,该视图控制器检查 属性,检索值,并通过其出口设置其 自己的 接口。
因此,总结一下:prepareForSegue
是您初始化新视图控制器的机会。但仅此而已。新的视图控制器稍后将控制它自己的视图——顾名思义!它会从自己的 viewDidLoad
开始并在以后执行此操作。