ios - 身份验证后 Firebase uid 返回 nil (Swift)

标签 ios swift firebase uid

在我的应用程序中,一旦它打开,我就会检查用户是否已经在初始 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/

相关文章:

ios - 导航栏上没有后退按钮

iOS 语音识别 - 不识别文本,通过其他记录识别

iphone - 将字符串转换为日期的日期比较

iOS App 需要很长时间才能启动

javascript - Firebase DB snapshot.val() 返回 null

ios - 创建复杂的 [String :AnyObject] for Alamofire parameters

ios - @discardableResult 在框架中没有按预期工作

iOS 应用程序因 "CFNetwork"而崩溃

angularjs - 消息数组的 Firebase 安全规则

Firebase Crashlytics - 禁用版本