Swift3 在ApplicationWillTerminate中,Viewcontroller为零

Swift3 在ApplicationWillTerminate中,Viewcontroller为零,swift3,xcode8,viewcontroller,optional,appdelegate,Swift3,Xcode8,Viewcontroller,Optional,Appdelegate,在ApplicationWillTerminate中的我的AppDelegate中,我创建了一个变量: let firstVC = FirstViewController() print(firstVC.lbl.text) 在我终止应用程序后,应用程序崩溃,因为“致命错误:在展开可选值时意外发现nil”。在我做了一些检查之后,显然Viewcontroller是零 有人知道怎么解决这个问题吗 非常感谢正如我在评论中所说的,我无法想象firstVC为零,因为它唯一可能的方式是如果它的init是可失

在ApplicationWillTerminate中的我的AppDelegate中,我创建了一个变量:

let firstVC = FirstViewController()
print(firstVC.lbl.text)
在我终止应用程序后,应用程序崩溃,因为“致命错误:在展开可选值时意外发现nil”。在我做了一些检查之后,显然Viewcontroller是零

有人知道怎么解决这个问题吗


非常感谢

正如我在评论中所说的,我无法想象
firstVC
为零,因为它唯一可能的方式是如果它的init是可失败的,这是不可能的,因为您无法覆盖
UIViewController.init()
使用一个失败的,即使这样,编译器也会抱怨你不得不说
print(firstVC?.lbl.text)
。这说明了斯威夫特可选类型的优点

要验证:
print(firstVC.lbl)
应打印为零。仅当您从故事板实例化
FirstViewController
或从NIB加载时,才会运行连接插座的逻辑

无论如何,如果您只是创建一个新的
FirstViewController
实例,这将不会反映用户对其“屏幕上”元素所做的任何更改,但包括
lbl
在内的每个元素都将有其默认值

可能的解决办法:

  • 应用程序中获取活动的
    FirstViewController
    实例将终止(:)
    并保存其
    lbl
    文本
  • 我不知道你的应用程序在做什么,但是视图应该显示你的数据模型,这样就可以保存你的数据模型
  • 看一看,大概是一般情况

什么是FirstViewController&为什么在应用程序中创建它将终止?Gagan_iOS所说的,而且我怀疑
FirstViewController
是否为零。相反,我猜当您不从故事板实例化
FirstViewController
或不从NIB加载它时,
lbl
是一个未连接的插座。我正在尝试将lbl.text保存为应用程序中的用户默认值将终止,并且没有连接插座。请使用if let或guard以避免应用程序崩溃。