在我的应用程序中,一旦它打开,我就会检查用户是否已经在初始 View 的 viewdidload 中进行了身份验证。如果他们已经通过身份验证,我将执行一个 segue 到主视图。此时我什至将 uid 打印到日志中,并且打印正确。
override func viewDidLoad() {
super.viewDidLoad()
if ref.authData != nil {
let uid = ref.authData.uid
print(uid)
然后我稍后在应用程序中执行相同的操作,以便在用户单击其个人资料设置时获取用户的一些信息。我写了完全相同的代码来获取他们的 uid,但这次 uid 返回 nil 并因错误而崩溃
“ fatal error :在展开可选值时意外发现 nil”
这是 Firebase 还是模拟器问题?
编辑:这个问题只出现过两次。否则,代码本身会按预期运行,这让我想知道它是火力点还是模拟器问题。
最佳答案
您想使用 observeAuthEventWithBlock
方法,这是一个实时身份验证监听器。
override func viewDidAppear() {
let ref = Firebase(url: "https://<YOUR-FIREBASE-APP>.firebaseio.com")
ref.observeAuthEventWithBlock({ authData in
if authData != nil {
// user authenticated
print(authData)
self.performSegueWithIdentifier("LoginToOtherView", sender: nil)
} else {
// No user is signed in
}
})
}
关于ios - 身份验证后 Firebase uid 返回 nil (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322592/