首页 > 解决方案 > 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()

标签: swiftxcodefirebasegoogle-cloud-firestoreviewmodel

解决方案


您是否将对象从第一个传递到第二个?我会在未初始化的第二个控制器中使用可选变量,以便它从第一个控制器中获取它。

你可以在第一个控制器中做

secondViewController.userRetrievedData = userRetrievedData
navigationController?.pushViewController(secondViewController, animated: true)

在第二个控制器中

userRetrievedData?.firstName

推荐阅读