我已经开始为一个简单的应用程序开发后端,并且我已经建立了一个数据库类(名为DB委托
),所有文件都将与之通信。在我的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
}
它是一个静态公共
,所以我可以从其他文件中访问db委托
。
在我的其他文件中,我有以下帮助可读性:(因为它是一个类,它将通过引用传递)
let dbDelegate = AppDelegate.dbDelegate
在我的DBDelegate
课程中:
var db = Firestore.firestore()
init() {
FirebaseApp.configure()
}
当我构建代码时,它构建得很好。
运行时,应用程序立即崩溃与SIGABRT
。错误消息是:由于未捕获异常而终止应用程序'FIRAppNotCon的异常',原因是:'失败获取FirebasApp实例。请调用Firebase App.configure()之前使用的FiRecovery'
DBDelegate
类中的init函数上放置断点。它没有到达断点。dbDelegate
变量设置为惰性的
:
lazy不能在已经懒惰的全局上使用
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 }
静态成员'db委托'不能用于类型'App委托'的实例
任何帮助都会很好!
编辑:我找到了一个简陋的解决方案,见下文。
首先,我要感谢@DionzB建议使用单例(我做到了)。我将在这个答案中引用他/她的帖子。
好的,在研究和使用断点之后,我发现我的自定义类实际上是在AppDelegate之前执行的。知道了这一点,我在以下行之前创建了一个变量:
static let shared = FirebaseService()
名称并不重要,因为我/你不会调用它,并将其分配给Firebase App.configure()
Firebase Service类变成:
class FirebaseService: NSObject {
let constantToNeverTouch = FirebaseApp.configure()
static let shared = FirebaseService()
init() {
}
}
接下来,您必须确保FirebaseApp.configure()不在代码中的其他位置。它也不应该在AppDelegate中。有多个FirebaseApp.configure()会使应用程序崩溃。
问题内容: 如果没有线程正在等待,使用,任何来电或没有任何效果。我有一种情况,如果在等待集为空时调用,则后续调用不应将线程置于等待状态。如何做到这一点?信号量可能是我能想到的一种解决方案。有没有更优雅的解决方案? 问题答案: 这种情况似乎非常适合。呼叫而不是和而不是等待。
我现在刚到Spring。我试图遵循调用PostConstruct和BeanPostProcessor的顺序。 根据我所学,以下是顺序:- null null SpringConfig文件foo.xml删除了beans标记上下文:component-scan base-package=“SpringTest” 回应 初始化MySpring构造函数 初始化ApplicationContext Post
问题内容: 问题 我正在使用内联函数定义设置反应 然后在DOM引用中未设置 我的理解是,回调应该在安装期间运行,但是在ref回调函数 之前* 调用添加语句揭示。 * 例如,我看过的其他代码示例在github上的讨论都表明相同的假设,应该在中定义的任何回调 之后调用,甚至在对话中也要说明 那么在所有的ref回调都执行完之后,componentDidMount是否被触发? 是。 我正在使用反应 15.
问题内容: 因此,我遵循了Parse SDK网站的《快速入门指南》中的说明。该应用程序第一次运行良好。但是,当我最小化该应用程序并从任务切换器再次运行它时,它会强制关闭。 该错误对我来说没有任何意义。Logcat- Mainactivity.java 问题答案: 您可以有一个单独的类来执行初始化工作。因此,创建一个可扩展的类。 然后在AndroidManifest.xml中,将类添加到Applic
但我明白了,尽管我的规则是公开的 我怎样才能做到这一点?我计划在未来使用改型。
考虑以下合成函数: 现在,当我想在Vue抛出错误:“未捕获错误:[Vue composition api]必须在使用任何函数之前调用Vue.use(plugin)。” 组件API由文件“/boot/auth”中的Quasar Framework启动文件实例化。js': 有没有办法在组件之外使用导出的计算属性? 根据这个例子,它是一个使用相同组合API的库,当对象中实例化了时,它应该可以工作。有更多