Извлечение данных из новой Firebase
пожалуйста, помогите. После перехода на новую 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 я добавляю в проект.
9 ответов
Я еще не видел этого ответа, мне пришлось добавить вызов configure в метод init AppDelegate. Так это выглядит:
override init() {
super.init()
// Firebase Init
FIRApp.configure()
}
была та же проблема. Я искал проблемы, связанные с 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.
}
авария устранена.
Итак, с моим, у меня также был ref, объявленный немедленно, когда был создан экземпляр контроллера вида. Я должен был загрузить его после того, как приложение было настроено в делегате приложения с FIRApp.configure()
.
перед:
let serverRef = Firebase("firebaseURL")
после:
lazy var serverRef = FIRDatabase.database().reference()
это задерживает создание экземпляра ссылки на базу данных до ее необходимости, которая не будет до viewDidLoad
на контроллере начального вида.
построить на ответ @ColdLogic, почему у меня эта ошибка была, потому что у меня огневая база справочная база данных создается в init метод в-представление-контроллер, не в методе viewDidLoad. Поскольку методы init для всех классов, которые создаются при запуске приложения, называются до приложение: метод DidFinishLaunchingWithOptions в AppDelegate, он вызывал этот сбой. Двигая эту линию код:
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()
}
}
решил проблему для меня.
У меня тоже была проблема с базой данных военнослужащих. Исправлено путем добавления
import FirebaseDatabase
мой код
была такая же проблема сегодня, вам нужен "firebase_url":"https://xxxxxxxxxx.firebaseio.com " в google-сервисах.json и для этого сделайте это шаги https://support.google.com/firebase/answer/7015592#android Если у вас был один файл с облачной платформы google раньше, возможно, есть некоторые различия, и вы должны проверить. Для меня это работает.
в моем случае мне пришлось изменить настройку для вызова перед вызовом super applicationDidLaunch:
[FIRApp configure];
[super application:application didFinishLaunchingWithOptions:launchOptions];
я получал эту ошибку, пока не сделал FIRApp.configure()
первая строка AppDelegate
didFinishLaunchingWithOptions
убедитесь, что вы загрузили GoogleService-Info.plist
файл из консоли Firebase и добавлен в корневой каталог вашего проекта.
как только вы добавили его, вызовите эту функцию из didFinishLaunchingWithOptions
в AppDelegate:
FIRApp.configure()
вот он, стоит и работает!