我很难弄清楚到底是怎么回事。基本上,我要打开我的第一个视图控制器,该控制器从firebase获取用户信息。即名称和uid。我正在第二个视图控制器中通过didSet()
发送数据(这是在打开第二个视图控制器之前发送的)。确实发送了数据,因为我已经使用print()
对其进行了测试。但是,当我导航到第二个视图控制器(使用选项卡控制器和导航控制器)时,导航到第二个视图控制器时数据不再存在。
import Foundation
struct User {
let uid: String
let name: String
init(uid: String,dictionary: [String: Any]) {
self.uid = uid
self.name = dictionary["uname"] as? String ?? ""
}
}
然后在我使用的第一个控制器中:
guard let uid = Auth.auth().currentUser?.uid else {
print("Could not init User at start")
return }
Database.database().fetchUser(withUID: uid) { (user) in
secondController.user = user
}
.. 在我的secondView控制器中,我有:
var user: User? {
didSet {
printUser()
}
}
printUser(){
let uid = user?.uid
print(uid)
}
这就是我知道数据发送的方式。
但是,当我通过标签栏控制器和导航控制器导航到第二个ViewController时,数据不存在。即我在视图中加载了printUser()
,但由于user?.uid为nil,因此出现了错误。
我正在通过故事板导航viewControllers。