You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Firestore获取集合赋值时遇‘表达式类型模糊’错误求助

解决Firestore获取集合时的“表达式类型模糊”及“找不到Firestore”错误

问题根源分析

你遇到的两个错误本质是模块导入拼写错误和Swift类型推断失效导致的:

  1. Cannot find 'Firestore' in scope:大概率是导入模块时拼写错误(把FirebaseFirestore写成了FirebaseFireStore,注意store是小写s)。
  2. Type of expression is ambiguous without more context:Firestore的addSnapshotListener闭包参数类型未显式指定,Swift无法自动推断,导致歧义。

修正步骤及代码

1. 修正导入语句(解决“找不到Firestore”错误)

确保在CategoryViewModel中导入正确的Firebase子模块,注意大小写:

import Foundation
import Firebase
import FirebaseFirestore  // 正确拼写:小写s的Firestore
import FirebaseFirestoreSwift

2. 显式指定闭包参数类型(解决“表达式类型模糊”错误)

在addSnapshotListener的闭包中,给querySnapshot和error加上明确的类型标注,消除Swift的推断歧义:

修正后的CategoryViewModel代码

import Foundation
import Firebase
import FirebaseFirestore
import FirebaseFirestoreSwift

class CategoryViewModel: ObservableObject{
    @Published var categories: [Category] = []
    
    private var categoriesDBReference = Firestore.firestore().collection("categories")
    
    func fetch(){
        // 显式指定闭包参数类型:QuerySnapshot? 和 Error?
        categoriesDBReference.addSnapshotListener { (querySnapshot: QuerySnapshot?, error: Error?) in
            guard let documents = querySnapshot?.documents else{
                print("No documents retrieved when fetching all categories.")
                return
            }
            self.categories = documents.compactMap { queryDocumentSnapshot -> Category? in
                return try? queryDocumentSnapshot.data(as: Category.self)
            }
        }
    }
}

Category结构体无需修改

import Foundation
import FirebaseFirestoreSwift

struct Category: Codable, Identifiable, Hashable{
    @DocumentID var id: String?
    var categoryName: String?
}

额外检查点

  • 确认Swift Package Manager中已添加FirebaseFirestore和FirebaseFirestoreSwift依赖,且版本与Firebase主库兼容。
  • 验证Firestore控制台中categories集合的字段名(categoryName)与结构体属性完全一致,包括大小写。

内容的提问来源于stack exchange,提问作者Ravindu Wataketiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:54:56