Я использую UITableViewDiffableDataSource с моим UITableView, и он работает должным образом. Однако у меня возникают проблемы с обновлением элемента в снимке. У меня есть простой образец, где;
enum Section {
case one
}
struct Item: Hashable {
let identifier: Int
let text: String
public func hash(into hasher: inout Hasher) {
hasher.combine(identifier)
}
public static func == (lhs: Item, rhs: Item) -> Bool {
return lhs.identifier == rhs.identifier
}
}
с начальным снимком, созданным с использованием
var snapshot = NSDiffableDataSourceSnapshot<Section, Item>()
snapshot.appendSections([.one])
snapshot.appendItems([
Item(identifier: 1, text: "One"),
Item(identifier: 2, text: "Two"),
Item(identifier: 3, text: "Three")
])
dataSource.apply(snapshot)
Если бы я попытался обновить элемент, используя
var snapshot = dataSource.snapshot()
snapshot.reloadItems([
Item(identifier: 2, text: "Foo")
])
dataSource.apply(snapshot)
ничего бывает. Я ожидаю, что text
элемента с identifier
= 2 будет обновлено до «Foo». Примечание. Я не включил сюда код поставщика ячеек табличного представления.
Я читал похожие сообщения, например Как обновить ячейку таблицы с помощью diffable UITableView и Может ли UITableViewDiffableDataSource обнаруживать элемент изменилось? но ответ не совсем очевиден.