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 开始并在以后执行此操作。