Swift3 在ApplicationWillTerminate中,Viewcontroller为零
在ApplicationWillTerminate中的我的AppDelegate中,我创建了一个变量: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是可失
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
是否为零。相反,我猜当您不从故事板实例化FirstViewController
或不从NIB加载它时,lbl
是一个未连接的插座。我正在尝试将lbl.text保存为应用程序中的用户默认值将终止,并且没有连接插座。请使用if let或guard以避免应用程序崩溃。