在 ApplicationWillTerminate Viewcontroller 中为零
In ApplicationWillTerminate Viewcontroller is nil
我在 ApplicationWillTerminate 的 AppDelegate 中创建了一个变量:
let firstVC = FirstViewController()
print(firstVC.lbl.text)
我终止应用程序后,应用程序崩溃了,因为 "fatal error: unexpectedly found nil while unwrapping an Optional value"。在我做了一些检查后,显然 Viewcontroller 为零。
有人知道如何解决这个问题吗?
非常感谢
就像我在评论中所说的那样,我无法想象 firstVC
是 nil 因为唯一可能的方法是它的 init 是可失败的,这是不可能的,因为你不能覆盖 UIViewController.init()
和一个失败的,即使这样编译器也会抱怨你不得不说 print(firstVC?.lbl.text)
。这说明了 Swift 的可选类型之美。
验证:print(firstVC.lbl)
应该打印 nil。当您从故事板实例化 FirstViewController
或从 NIB 加载它时,连接出口的逻辑只是 运行。
无论如何,如果您只是创建 FirstViewController
的新实例,这将 不会 反映用户对其元素所做的任何更改 "on screen" 但每个包含 lbl
的元素将具有其默认值。
可能的解决方案:
- 获取
applicationWillTerminate(_:)
中的活动 FirstViewController
实例并保存其 lbl
文本
- 我不知道你的应用程序在做什么,但视图应该显示你的数据模型,所以最好保存你的数据模型。
- 大致看一下Preserving and Restoring State and probably the View Controller Programming Guide for iOS。
我在 ApplicationWillTerminate 的 AppDelegate 中创建了一个变量:
let firstVC = FirstViewController()
print(firstVC.lbl.text)
我终止应用程序后,应用程序崩溃了,因为 "fatal error: unexpectedly found nil while unwrapping an Optional value"。在我做了一些检查后,显然 Viewcontroller 为零。
有人知道如何解决这个问题吗?
非常感谢
就像我在评论中所说的那样,我无法想象 firstVC
是 nil 因为唯一可能的方法是它的 init 是可失败的,这是不可能的,因为你不能覆盖 UIViewController.init()
和一个失败的,即使这样编译器也会抱怨你不得不说 print(firstVC?.lbl.text)
。这说明了 Swift 的可选类型之美。
验证:print(firstVC.lbl)
应该打印 nil。当您从故事板实例化 FirstViewController
或从 NIB 加载它时,连接出口的逻辑只是 运行。
无论如何,如果您只是创建 FirstViewController
的新实例,这将 不会 反映用户对其元素所做的任何更改 "on screen" 但每个包含 lbl
的元素将具有其默认值。
可能的解决方案:
- 获取
applicationWillTerminate(_:)
中的活动FirstViewController
实例并保存其lbl
文本 - 我不知道你的应用程序在做什么,但视图应该显示你的数据模型,所以最好保存你的数据模型。
- 大致看一下Preserving and Restoring State and probably the View Controller Programming Guide for iOS。