【发布时间】:2019-12-06 03:37:27
【问题描述】:
我有问题,UI 从零更新到某个数字变得丑陋。 问题是删除所有项目并向数组 UI 添加新项目时会更新,因为此数组标记有 @Published 属性包装器。更详细的问题说明:
- 在阶段 1(在代码快照中标记)从列表中删除项目。
- 在这种情况下,UI 会更新并在 UI 更新中计数为零。
- 经过一段时间,当提取完成并将新项目添加到数组中 (第 2 阶段)。
- 然后 UI 会根据新项目数进行更新。
- 问题是 UI 中的计数从零更新为某个数字。
这里有没有一种方法可以为标记有@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)
}
}
}
【问题讨论】:
-
一种可能的方式是,您将数据“首先”存储在另一个地方(可能直到全部加载完毕),然后在您希望更新 UI 时将其填充到您发布的变量中......