请帮忙。迁移到新的Firebase后,我无法检索数据。 使用这种结构:
let ref = FIRDatabase.database().reference()
override func viewDidLoad() {
super.viewDidLoad()
ref.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
let postDict = snapshot.value as! [String : AnyObject]
print("\(postDict)")
})
}
跑完后我看到错误:
2016-05-19 10:04:22.264 123a[88652:13688922] The default app has not been configured yet.
2016-05-19 10:04:22.276 123a[88652:13688922] *** Terminating app due to uncaught exception 'MissingDatabaseURL', reason: 'Failed to get FIRDatabase instance: FIRApp object has no databaseURL in its FirebaseOptions object.'
*** First throw call stack:
我阅读了文档,但无法解决此问题。 GoogleService-Info.plist我添加到项目中。
答案 0 :(得分:21)
我还没有看到这个答案,我不得不将配置调用添加到AppDelegate init方法。所以它看起来像:
override init() {
super.init()
// Firebase Init
FIRApp.configure()
}
答案 1 :(得分:5)
有同样的问题。 我寻找与plist相关的链接问题,但这不是问题。 我想也许是因为我的初始视图控制器在配置完成之前被撤销了。 我通过试验来解决了这个问题。
我的初始视图控制器是:
let ref = FIRDatabase.database().reference()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
我已经改变了这个:
var ref = FIRDatabaseReference.init()
override func viewDidLoad() {
super.viewDidLoad()
ref = FIRDatabase.database().reference()
// Do any additional setup after loading the view, typically from a nib.
}
崩溃已解决。
答案 2 :(得分:3)
所以,有了我的,我也在视图控制器被实例化时立即声明了一个ref。在应用程序代理中使用FIRApp.configure()
配置应用程序后,我必须加载它。
在:
let serverRef = Firebase("firebaseURL")
后:
lazy var serverRef = FIRDatabase.database().reference()
这会延迟数据库引用的实例化,直到需要它为止,直到初始视图控制器上的viewDidLoad
为止。
答案 3 :(得分:1)
基于@ColdLogic给出的答案,我遇到此错误的原因是因为我在视图控制器上的init方法中创建了Firebase数据库引用,在viewDidLoad方法中不是 。由于在应用程序启动时实例化的所有类的init方法在AppDelegate中被称为之前应用程序:DidFinishLaunchingWithOptions方法,因此导致此崩溃。移动这行代码:
class MyViewController {
var firebaseRef: FIRDatabaseReference
required init?(coder aDecoder: NSCoder) {
...
firebaseRef = FIRDatabase.database().reference()
}
override func viewDidLoad() {
...
}
}
到这里:
class MyViewController {
var firebaseRef: FIRDatabaseReference
required init?(coder aDecoder: NSCoder) {
...
}
override func viewDidLoad() {
...
self.firebaseRef = FIRDatabase.database().reference()
}
}
为我解决了这个问题。
答案 4 :(得分:1)
我也遇到了Firebase数据库的问题。通过添加
修复了它import FirebaseDatabase
到我的代码
答案 5 :(得分:0)
今天遇到同样的问题,你需要在google-services.json上使用“firebase_url”:“https://xxxxxxxxxx.firebaseio.com”并为此执行此操作https://support.google.com/firebase/answer/7015592#android 如果您之前有一个来自谷歌云平台的文件,可能存在一些差异,您必须检查。对我来说这很有效。
答案 6 :(得分:0)
在我的情况下,我必须在调用超级applicationDidLaunch之前更改要调用的配置:
[FIRApp configure];
[super application:application didFinishLaunchingWithOptions:launchOptions];
答案 7 :(得分:0)
我收到此错误,直到我FIRApp.configure()
AppDelegate
didFinishLaunchingWithOptions
答案 8 :(得分:-1)
确保已从Firebase控制台下载fun.ymin = min
文件,并将其添加到项目目录的根目录中。
添加后,请从AppDelegate中的GoogleService-Info.plist
调用此函数:
didFinishLaunchingWithOptions
多数民众赞成,它应该启动并运行!