我在我的SwiftUI应用程序中有一个存储库,可以从Google Cloud Firestore抓取特定用户的所有操作。它使用快照侦听器使操作列表保持最新。
我想通过在我的代码中添加下面这行代码来更改查询,以便将结果限制在尚未完成的操作中:
.whereField("completed", isEqualTo: false)下面是它被添加到的函数,它创建侦听器并将其设置为存储库中的"actions“变量:
func loadData() {
let userId = Auth.auth().currentUser?.uid
if userId != nil {
self.listener = db.collection("action")
.order(by: "createdTime")
.whereField("userId", isEqualTo: userId!)
.whereField("completed", isEqualTo: false)
.addSnapshotListener { (querySnapshot, error) in
if let querySnapshot = querySnapshot {
self.actions = querySnapshot.documents.compactMap { document in
do {
let x = try document.data(as: Action.self)
return x
}
catch {
print(error)
}
return nil
}
}
}
} else {
return
}
}但一旦我添加了它(我有一个userId的索引,但不是完成的,如果这很重要的话),它会在第一次正确加载数据,但当我添加或更改现有操作时,视图不会更新,直到我退出并重新打开应用程序。
对于一个快照监听器,有多个这样的条件有什么问题吗?或任何其他会导致此侦听器不再获得动态更新的内容?
发布于 2021-05-23 04:15:14
https://stackoverflow.com/questions/67653746
复制相似问题