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()(所以你的超级类获得“消息”),所以你覆盖不会做更多的伤害比好.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。