【发布时间】:2021-05-07 13:57:07
【问题描述】:
我有两个 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()
【问题讨论】:
-
你能发布你的第二个 ViewController 的代码吗?你在哪里声明
userRetrievedData对象? -
我在两个 ViewController 的顶部声明,我编辑了我的代码。
-
好的,所以看起来问题是您仅在第一个视图控制器中初始化
userRetrievedData,而不是另一个。您应该在引用其属性之前在第二个视图控制器中初始化该实例。 -
我在两个 ViewController 中都有代码,所以这不是问题。调用视图模型的声明和方法。我打错了 ViewController 而不是 ViewModel 现在编辑了帖子
-
和文章最后部分一样。只有“ViewController 内部的声明”我没有“ViewModel 内部的声明”代码是用于 ViewController。我提到的代码是 ViewController 中的初始化。
标签: swift xcode firebase google-cloud-firestore viewmodel