swift - Swift 在使用 Viewmodel 和 Firebase 检索数据时推送 Viewcontroller 错误
问题描述
我有两个 ViewController 用于显示来自 Firebase 的数据。在第一个 ViewController 中,我可以在调用 ViewModel 时显示我想要的数据。当我按下第一个 ViewController 中的按钮时,我会导航到第二个 ViewController:
navigationController?.pushViewController(secondViewController, animated: true)
我有一个从 ViewModel 中检索的用户对象,该对象从 Firebase 中检索数据:
userRetrievedData = userViewModel.user
视图模型:
let firstName = document.get("firstName") as? String ?? ""
self.user = Account(firstName: firstName)
在我可以在第二个 ViewController 中检索数据之前,但现在它给了我一个错误。
致命错误:在展开可选值时意外发现 nil:文件
在这一行上,我在第二个 Viewcontroller 中遇到错误,而第一个 Viewcontroller 中的同一行有效:
userRetrievedData.firstName!
为什么它在第二个 ViewController 而不是第一个中给出这个错误?
ViewController 内部的声明是相同的:
var userRetrievedData = User()
var userViewModel = UserViewModel()
解决方案
您是否将对象从第一个传递到第二个?我会在未初始化的第二个控制器中使用可选变量,以便它从第一个控制器中获取它。
你可以在第一个控制器中做
secondViewController.userRetrievedData = userRetrievedData
navigationController?.pushViewController(secondViewController, animated: true)
在第二个控制器中
userRetrievedData?.firstName
推荐阅读
- tags - 如何仅显示今天日期的 InfluxDb 标签?
- linux - crontab 没有启动脚本
- typescript - 在装饰器中扩展类会破坏静态属性继承
- amazon-s3 - 使用 datastage 将压缩数据从 Amazon S3 加载到 Postgres
- date - 从spotfire中的字符串解析日期时间
- algorithm - 运行 Neo4j Graph 算法 Louvain 时出现 ArrayIndexOutOfBoundsException
- vbscript - 在uft的webtable中更改子项innertext?
- php - 检查php文件中所有变量的值
- c# - 将 HTML 5 DatePicker 与日期输入字段一起使用
- html - 在 IE11 中使元素具有粘性