【问题标题】:How do you use Firebase within a custom class?如何在自定义类中使用 Firebase?
【发布时间】:2017-12-25 03:12:15
【问题描述】:

我完成了在我的应用上设置 Firebase 的步骤,并且测试良好。但是,当我创建了一个自定义 swift 类来创建管理数据库的函数时,它崩溃并显示“无法获取默认的 firdatabase 实例。必须在使用 firdatabase 之前调用 firapp.configure()”。我在 AppDelegate 中调用了 configure(),但它似乎没有传递给我的自定义类。下面是我得到的错误,我调用 FirebaseApp.configure() 的 AppDelegate 部分,以及自定义类。提前致谢。

DatabaseTestApp[7814:336288] *** 由于未捕获的异常“FIRAppNotConfigured”而终止应用程序,原因:“无法获取默认 FIRDatabase 实例。必须在使用 FIRDatabase 之前调用 FIRApp.configure()。'

import UIKit
import Firebase
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    FirebaseApp.configure()
    return true
    }
}

我的自定义类:

import Foundation
import UIKit
import FirebaseDatabase
class FirebaseClass
{
    var ref:DatabaseReference?
    init ()
    {
        ref = Database.database().reference()
    }
}

【问题讨论】:

  • 请发布 logcat 和您的代码,以便人们可以帮助您。一个人无法通过正确的信息帮助别人
  • 嗨 UmarZaii,我编辑了我的帖子以显示所有这些信息。

标签: swift class firebase appdelegate


【解决方案1】:

假设您正在创建某种名为 FirebaseManager 的类,请执行以下操作:

class FirebaseManager {
    public static let instance = FirebaseManager()
    private init(){
        FirebaseApp.configure()
    }
}

【讨论】:

  • 是的,我也这么认为,但是由于它只能配置一次(如果您尝试再次配置它会崩溃),如果第二次调用 init(它将是),它崩溃了。
  • 您应该考虑为 Firebase 类使用 Singleton,或者可能只是您每次访问的类中的静态实例变量,而不是通过初始化程序。我已经修改了我的解决方案以反映这一点
  • 使用单例类有效!非常感谢杰。
猜你喜欢
  • 2010-11-24
  • 1970-01-01
  • 2021-11-17
  • 2021-01-07
  • 2020-01-05
  • 1970-01-01
  • 2020-07-24
  • 2022-01-25
  • 2015-09-14
相关资源
最近更新 更多