ios – 默认应用尚未配置

前端之家收集整理的这篇文章主要介绍了ios – 默认应用尚未配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图将我的应用程序升级到新版本的Firebase.我浏览了设置指南,并编辑了我的所有代码以匹配新的语法.但是,当我运行应用程序时,我会收到这两个错误.
The default app has not been configured yet.
Terminating app due to uncaught exception 'MissingDatabaseURL',reason: 'Failed to get FIRDatabase instance: FIRApp object has no databaseURL in its FirebaSEOptions object.'

我在AppDelegate中有FIRApp.configure(),并将GoogleServices-Info.plist导入到我的项目中. plist也有所有正确的信息.任何人遇到这个或知道如何解决它?

解决方法

这是你的问题的答案:

要配置Firebase,您必须在某处执行FIRApp.configure().完成之后,您可以使用let firebaseDatabaseReference = FIRDatabase.database().reference()来获取对该数据库的引用并开始使用它.问题不在于Firebase“本身”,而是Swift的行为.

如果将FIRApp.configure()放在AppDelegate func应用程序中(应用程序:UIApplication,didFinishLaunchingWithOptions launchOptions:[NSObject:AnyObject]?) – > Bool然后在MyDatabase类中,你使用let firebaseDatabaseReference = FIRDatabase.database().在你声明的函数之外的引用()()在执行FinishLaunchingWithOptions函数之前有时执行代码FIRDatabase.database().

本质上,您的课程正在尝试获得对Firebase数据库的引用,因为它有机会自行配置,在控制台中生成错误“默认应用尚未配置”.

注意:这并不总是发生,有时候应用程序开始慢,例如在iOS Simulator中,并且没有机会在MyDatabase“let”执行之前完成并尝试获取引用.

这就是为什么在AppDelegate中移动FIRApp.configure()代码以覆盖init()的功能,实际上它确保在AppDelegate被初始化时(在大多数情况下,在MyDatabase被初始化之前)配置代码被执行,

override init() {
   super.init()
   FIRApp.configure()
   // not really needed unless you really need it FIRDatabase.database().persistenceEnabled = true
}

还要确保你的super.init()(所以你的超级类获得“消息”),所以你覆盖不会做更多的伤害比好.

猜你在找的iOS相关文章