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()(所以你的超级类获得“消息”),所以你覆盖不会做更多的伤害比好.