在我的应用程序中,一旦打开,我会检查用户是否已在初始视图的viewdidload中进行了身份验证。如果它们已经过身份验证,我会对主视图执行segue。我此时甚至将uid打印到日志中并正确打印。
override func viewDidLoad() {
super.viewDidLoad()
if ref.authData != nil {
let uid = ref.authData.uid
print(uid)
我稍后会在应用中执行相同操作,以便在用户点击其个人资料设置时获取一些用户信息。我写了完全相同的代码来获取他们的uid,但这次uid返回nil并且因错误而崩溃
"致命错误:在展开可选值时意外发现nil"
这是firebase还是模拟器问题?
编辑:此问题仅发生过两次。否则,代码本身按预期工作,这让我想知道它是否是firebase或模拟器问题。
答案 0 :(得分:2)
您希望使用observeAuthEventWithBlock
方法,这是一种实时身份验证侦听器。
dplyr
答案 1 :(得分:1)
关于您遇到的确切错误我不确定,但是快速执行代码(并避免错误)的方法是致电:
if let uid = ref.authData.uid {
print(uid)
}
此代码安全地展开authData
和UID。
答案 2 :(得分:1)
我遇到了这个问题,花了我几个小时。然后我意识到我只是忘了这样做:
ref = FIRDatabase.database().reference()
之前
var ref: FIRDatabaseReference!