我正在构建一个 IOS 应用程序,我正处于想要在选择器视图中加载一些类别的阶段。类别列表作为文档存储在 Firestore 中。
我有一个执行以下操作的函数:
- 启动数组
- 从 Firestore 读取数据
- 将值附加到数组
- 返回数组
问题是该函数似乎返回了数组,甚至没有从 Firestore 获得任何结果
我的数据模型
class categoryModel {
var catImg=""
var catName=""
var catID=""
//set categories
init(catImg: String, catName:String, catID:String){
self.catName=catName
self.catImg=catImg
self.catID=catID
}
}
Firestore 参考
struct FirestoreReferenceManager {
static let event = "events"
static let db = Firestore.firestore()
static let rootEvents = db.collection("events")
static let rootUsers = db.collection("users")
}
Firestore 服务
class FirestoreService {
static func getCategoryfromDB()->[categoryModel] {
let rootCategory = FirestoreReferenceManager.rootEvents
var tabCategory=[categoryModel]()
rootCategory.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
tabCategory.append(categoryModel(catImg: document.data()["img"] as! String, catName:document.data()["name"] as! String, catID: document.documentID))
print("number of categories running: \(tabCategory.count)")
}
}
}
print("number of categories final: \(tabCategory.count)")
return tabCategory
}
}
检查日志显示的内容
umber of categories final: 0
number of categories final: 0
number of categories running: 1
number of categories running: 2
number of categories running: 3
number of categories running: 4
number of categories running: 5
number of categories running: 6
number of categories running: 7
number of categories running: 8
number of categories running: 9
number of categories running: 10
number of categories running: 11
number of categories running: 1
number of categories running: 2
number of categories running: 3
number of categories running: 4
number of categories running: 5
number of categories running: 6
number of categories running: 7
number of categories running: 8
number of categories running: 9
number of categories running: 10
number of categories running: 11
前 2 行实际上应该是最后一行。
当我从视图控制器读取 Firestore 时,数组是空的。我尝试对数据模型进行硬编码,它工作正常。
我读到了获取数据的一些“延迟”,但是如何解决这个问题?
我该如何解决这个问题?