Diffable data source и повторяющиеся идентификаторы
Вопрос
Что произойдёт при apply снимка NSDiffableDataSourceSnapshot, в котором два элемента имеют одинаковый идентификатор?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Крэш: идентификаторы элементов в снимке должны быть уникальныправильный ответ
- Второй элемент тихо пропустится, первый останется
- Таблица покажет оба элемента в разных ячейках
- Элементы склеятся в одну ячейку с анимацией слияния
Разбор
Diffable data source строит разницу между снимками по идентификаторам, и они обязаны быть уникальными в пределах снимка. Дубликаты приводят к исключению о неуникальных идентификаторах, и полагаться на какое-то мягкое поведение нельзя. Частый источник: пагинация, когда сервер возвращает элемент, который уже есть на предыдущей странице. Данные нужно дедуплицировать до формирования снимка.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Неверная картинка в переиспользуемой ячейке
Следующий вопрос
Что делать в prepareForReuse
Ещё по теме «UIKit»
- reconfigureItems и reloadItems
- Ячейки с автоматической высотой
- Разница между frame и bounds
- Где брать финальный размер view
- Почему кнопка не получает нажатия
- Content hugging и compression resistance
- Задача на Swift: разница снимков для diffable data source
- setNeedsLayout и layoutIfNeeded