我有一个 Firestore 监听器,用于监听摘要集合/文档的任何更改。如果 summaryListenerRegistration == nil { summaryListenerRegistration = db.collection(\'partner&...
我有一个 Firestore 监听器,用于监听摘要集合/文档的任何更改。
if summaryListenerRegistration == nil {
summaryListenerRegistration = db.collection("partner").document(userUID).collection("summary").document("summary").addSnapshotListener { documentSnapshot, error in
我需要在我的主视图中以排序列表的形式显示此文档中的信息(嵌套地图信息)。我的问题是 - 我应该在哪里排序?应该在实际的侦听器中还是在视图的列表中?我目前正在使用以下方式在侦听器中进行排序
self.summaryItem.sort()
它使用我已经嵌入在 SummaryItem 结构中的静态函数。
struct SummaryItem: Codable, Identifiable, Hashable, Comparable {
static func <(lhs: SummaryItem, rhs: SummaryItem) -> Bool {
return lhs.name < rhs.name
}
var id: UUID = UUID()
var name: String
var fileName: String
var author: String
var category: String
}
我的主要观点是以下内容呈现“列表”(不包括已排序的{$0.name,$1.name}):
ForEach(model.summaryItem) { summary in
BookView(book: summary)
.tag(summary)
}
编辑 - 根据处理方式的不同,在 Listener 中还是在 ForEach 中,UI 上的结果会有所不同。我不确定为什么会这样,因为我尝试过其他方法
ForEach(model.summaryItem.sorted {$0.name , $1.name}) { book in
被 @Published 变量引用。因此,它实际上并没有按我预期的方式工作。