Ios 尝试显示身份验证选择器时FirebaseUI崩溃

Ios 尝试显示身份验证选择器时FirebaseUI崩溃,ios,swift,firebase,firebase-authentication,firebaseui,Ios,Swift,Firebase,Firebase Authentication,Firebaseui,我在我的项目中使用了Firebase和FirebaseUI,并且在尝试登录时经常出现相同的崩溃。用户点击登录按钮,然后应该显示身份验证选择器,用户可以使用Facebook/Google或电子邮件/密码登录。但是,发生的情况是,除了标记以下行外,它崩溃时没有任何错误消息: struct FIRAuthLogin { private let authUI = FUIAuth.defaultAuthUI() private var viewController: UIViewContr

我在我的项目中使用了Firebase和FirebaseUI,并且在尝试登录时经常出现相同的崩溃。用户点击
登录
按钮,然后应该显示身份验证选择器,用户可以使用Facebook/Google或电子邮件/密码登录。但是,发生的情况是,除了标记以下行外,它崩溃时没有任何错误消息:

struct FIRAuthLogin {
    private let authUI = FUIAuth.defaultAuthUI()
    private var viewController: UIViewController!

    init(delegate: FIRCustomAuthDelegate, viewController: UIViewController) {
        self.viewController = viewController

        authUI?.delegate = delegate
        authUI?.providers = [FUIGoogleAuth(), FUIFacebookAuth()]
    }

    func present(completion: @escaping () -> Void) {

        // Exception on the line below!
        let authViewController = authUI?.authViewController()

        self.viewController.present(authViewController!, animated: true, completion: completion)
    }
}
即使行
中存在异常,让authViewController=authUI?.authViewController()
authViewController
不是
nil

下面是堆栈跟踪的图像(在问题导航器中):

问题是我只是覆盖了FUIPasswordSignUpViewController,所以我有点困惑

每当这种情况发生时,我通常只是从我的项目中删除cocoapod并再次集成它。然后它就可以正常工作了,但是由于我已经多次这样做了,并且错误仍然存在,所以一定有潜在的错误。不幸的是,我无法用FirebaseUI GitHub代码重现错误,所以我猜错误就在我这边。这就是为什么我在这里而不是在FirebaseUI iOS GitHub存储库中提问。

它最终得到了修复。我在FirebaseUI iOS存储库中打开了一个,在将我的项目发送给一位谷歌工程师后,他解决了这个问题:

看来你遇到了麻烦。将生成系统设置为使用标准(而不是新生成系统预览)、删除DerivedData并重新生成修复了该问题

目前,您将不得不不使用新的构建系统

终于修好了。我在FirebaseUI iOS存储库中打开了一个,在将我的项目发送给一位谷歌工程师后,他解决了这个问题:

看来你遇到了麻烦。将生成系统设置为使用标准(而不是新生成系统预览)、删除DerivedData并重新生成修复了该问题

目前,您将不得不不使用新的构建系统


尽量使代码更安全,例如为
authViewController
添加
if-let
。我猜这不会发生在生产中???我希望不是。我得到这个理论是因为你提到了通过Cocoapods重新安装框架。当通过TestFlight测试你的应用程序时,试着重现崩溃。我正在通过TestFlight进行测试,它工作正常。正如我所说,
authViewController
不是
nil
。使用
if-let
时,我也会遇到同样的异常。请尝试使代码更安全,例如为
authViewController
添加
if-let
。我猜这不会发生在生产中???我希望不是。我得到这个理论是因为你提到了通过Cocoapods重新安装框架。当通过TestFlight测试你的应用程序时,试着重现崩溃。我正在通过TestFlight进行测试,它工作正常。正如我所说,
authViewController
不是
nil
。我在使用
if let
时也会遇到同样的异常。