禁止为 ObservableObject 中的@Published 变量发送事件

Disable sending events for @Published variables in the ObservableObject

我有问题,UI 从零更新到某个数字时很难看。 问题是在删除所有项目并将新项目添加到数组时 UI 得到更新 因为此数组标有 @Published属性包装器。更详细的问题解释:

  1. 在第 1 阶段(在代码快照中标记)从列表中删除项目。
  2. 在这种情况下,UI 得到更新并在 UI 更新中计数为零。
  3. 一段时间后,获取完成并将新项目添加到数组中 (第 2 阶段)。
  4. 然后 UI 获取新项目计数的更新。
  5. 问题是 UI.
  6. 中从零到某个数字的丑陋计数更新

这里有没有一种方法可以为标有@Published 属性 包装器的 class 成员禁用分发事件?

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? [=10=].data(as: Item.self)) // 2. Adding new items.
            }
            completion(error)
        }
    }
}

不要对 items 执行部分更新。在设置 items.

之前计算整个新数组
func fetchUsing(query: Query, completion: @escaping (Error?) -> Void) {
    query.getDocuments { (result, error) in
        self.items = result?.compactMap { try? [=10=].data(as: Item.self) } ?? []
        completion(error)
    }
}