Справочная информация
Я начал разработку серверной части для простого приложения и настроил класс базы данных (с именем DBDelegate
), с которым будут взаимодействовать все файлы.В моем AppDelegate.swift
у меня есть это:
static public var dbDelegate:DBDelegate = DBDelegate()
private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure()
return true
}
Это static public
, поэтому я могу получить доступ к dbDelegate
из других файлов.
В других моих файлах для удобства чтения у меня есть следующее: (потому что это класс, который он будет передавать по ссылке)
let dbDelegate = AppDelegate.dbDelegate
В моем DBDelegate
классе:
var db = Firestore.firestore()
init() {
FirebaseApp.configure()
}
Сборка и запуск
Когда я собираю свой код, он строится нормально.
При запуске приложение быстро вылетает с SIGABRT
.Сообщение об ошибке:
Terminating app due to uncaught exception 'FIRAppNotConfiguredException', reason: 'Failed to get FirebaseApp instance. Please call FirebaseApp.configure() before using Firestore'
Что я пробовал
- Я попытался установить точку останова для функции init в классе
DBDelegate
.Это не достигает точки останова. - Я попытался сделать все
dbDelegate
переменные lazy
: - Я получил ошибку компиляции для той в AppDelegate:
lazy must not be used on an already-lazy global
- Ошибки времени выполнения для других: пожалуйста, вызовите FirebaseApp.configure () перед использованием Firestore.
- Я попробовал следующее (назначая dbDelegate в didFinishLaunchingWithOptions):
static public var dbDelegate:DBDelegate!
private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure()
dbDelegate = DBDelegate()
return true
}
- Я получаю сообщение об ошибке компиляции:
Static member 'dbDelegate' cannot be used on instance of type 'AppDelegate'
Любая помощь будет отличной!
Редактировать: Я нашел нестандартное решение, см. Ниже.