Как обновить элемент NSDiffableDataSourceSnapshot - PullRequest
0 голосов
/ 13 июля 2020

Я использую 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 обнаруживать элемент изменилось? но ответ не совсем очевиден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...