我有问题,UI很难从零更新为某个数字。 问题是在删除所有项目并将新项目添加到数组UI时得到更新 ,因为此数组已标记为 @Published 属性包装。有关问题的更详细说明:
这是一种为带有@Published属性包装器标记的类成员禁用分发事件的方法吗?
class ItemsProvider: ObservableObject {
@Published var items: [Item] = []
func fetchUsing(query: Query, completion: @escaping (Error?) -> Void) {
self.items.removeAll() // 1. Removing old items.
query.getDocuments { (result, error) in
result?.forEach {
self.items.append(try? $0.data(as: Item.self)) // 2. Adding new items.
}
completion(error)
}
}
}
答案 0 :(得分:3)
请勿对items
进行部分更新。在设置items
之前计算整个新数组。
func fetchUsing(query: Query, completion: @escaping (Error?) -> Void) {
query.getDocuments { (result, error) in
self.items = result?.compactMap { try? $0.data(as: Item.self) } ?? []
completion(error)
}
}