Ios Firestore查询不返回基于searchText的数据

Ios Firestore查询不返回基于searchText的数据,ios,swift,firebase,google-cloud-firestore,uisearchbar,Ios,Swift,Firebase,Google Cloud Firestore,Uisearchbar,我的搜索栏文本正在更新我的查询,但没有像我预期的那样从Firestore返回数据 这是我的数据模型中的方法: func getMealPlans(starred starredOnly:Bool = false, textToQuery searchText:String = "") { listener?.remove() let db = Firestore.firestore() va

我的搜索栏文本正在更新我的查询,但没有像我预期的那样从Firestore返回数据

这是我的数据模型中的方法:

func getMealPlans(starred starredOnly:Bool = false, textToQuery searchText:String = "") {
        
        listener?.remove()

        let db = Firestore.firestore()
        
        var query:Query = db.collection("mealPlans")
           
        query = query.whereField("title", isGreaterThanOrEqualTo: searchText)
        
        func queryData() {
            
            self.listener = query.addSnapshotListener({ (snapshot, error) in
                
                // Check for errors
                if error == nil && snapshot != nil {
                    
                    var mealPlans = [MealPlan]()
                    
                    // Parse documents into mealPlans
                    for doc in snapshot!.documents {
                        
                        let m = MealPlan(
                            docID: doc["docID"] as? String,
                            title: doc["title"] as! String)
                        
                        mealPlans.append(m)
                    }
                    // Call the delegate and pass back the notes in the main thread
                    DispatchQueue.main.async {
                        self.delegate?.mealPlansRetrieved(mealPlans: mealPlans)
                    }
                }
            })
        }

        queryData()   
    }
这是我在视图控制器中的搜索栏方法:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

        let searchedText = searchText.lowercased()
        model.getMealPlans(textToQuery: searchedText)
        
        self.tableView.reloadData()
    }

我想知道我的模型中的
query=query.whereField(“title”,大于或等于qualto:searchText)
是否是我的问题的根源。当我在此代码之后打印(searchText)时,我键入的
searchText
将按预期显示在控制台中。但是表视图不会使用具有匹配的
标题的单元格进行更新,即使它是完全匹配的。

问题最终在包含正确大小写值的数据库中生根,而我的查询都是小写的。显然是的,所以我创建了一个关键字数组来搜索我的数据

我的问题是:
query=query.whereField(“关键字”,数组内容:searchText)

 You need to use document data property to load MealPlan. Better make it the following way:
    
    1. Define data model as Codable:

import Foundation
import FirebaseFirestore
import FirebaseFirestoreSwift
            
struct MealPlan: Codable {
    @DocumentID var id: String?
    title: String?
}

2. Then use compact map to get mealPlans:

mealPlans = snapshot.documents.compactMap { document -> MealPlan? in
     do {
         let result = try document.data(as: MealPlan.self)
         return result
     }
     catch {
         print(error)
         return nil
     }
}