如何将Firebase Firestore接入Swift应用 找不到Firestore Manager怎么解决
修复方案
报错根因
你没有在项目中自定义FirestoreManager类,编译器无法识别该类型,才会抛出找不到的错误。Firebase官方SDK本身不提供这个类,它是教程中通常会自定义的、用于封装Firestore读写逻辑的工具类。
具体修复步骤
- 第一步:新建
FirestoreManager.swift文件,写入以下基础代码,你可以基于这个扩展你需要的读写逻辑:
import Foundation import FirebaseFirestore // 要继承ObservableObject才能被声明为StateObject注入全局环境 class FirestoreManager: ObservableObject { private let db = Firestore.firestore() // 示例:向recipes集合新增数据 func addRecipe(name: String, steps: [String], completion: @escaping (Error?) -> Void) { db.collection("recipes").addDocument(data: [ "name": name, "steps": steps, "createTime": Timestamp(date: Date()) ]) { error in completion(error) } } // 示例:读取recipes集合全量数据 func fetchRecipes(completion: @escaping ([ [String: Any] ]?, Error?) -> Void) { db.collection("recipes").getDocuments { snapshot, error in guard let docs = snapshot?.documents, error == nil else { completion(nil, error) return } completion(docs.map { $0.data() }, nil) } } }
- 第二步(可选简化):如果你不想用AppDelegate,可以直接删除AppDelegate相关代码,在App结构体的init方法中完成Firebase初始化,简化后的启动代码如下:
import SwiftUI import Firebase @main struct RecipyApp: App { @StateObject var firestoreManager = FirestoreManager() private let viewModel = AppViewModel() init() { FirebaseApp.configure() } var body: some Scene { WindowGroup { ContentView() .environmentObject(viewModel) .environmentObject(firestoreManager) } } }
- 第三步:确认依赖导入正确,打开项目的Package Dependencies配置,确认导入Firebase库时已经勾选了
FirebaseFirestore产品。 - 第四步:按
Command+Shift+K清理Xcode编译缓存,再重新运行项目即可解决报错。
内容的提问来源于stack exchange,提问作者Elliot Silva
相关产品推荐
相关产品推荐

