Выбор ответа Middle UIKit обновлено

Diffable data source и повторяющиеся идентификаторы

Вопрос

Что произойдёт при apply снимка NSDiffableDataSourceSnapshot, в котором два элемента имеют одинаковый идентификатор?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Крэш: идентификаторы элементов в снимке должны быть уникальны. Diffable data source строит разницу между снимками по идентификаторам, и они обязаны быть уникальными в пределах снимка.

Варианты ответа

  1. Крэш: идентификаторы элементов в снимке должны быть уникальныправильный ответ
  2. Второй элемент тихо пропустится, первый останется
  3. Таблица покажет оба элемента в разных ячейках
  4. Элементы склеятся в одну ячейку с анимацией слияния

Разбор

Diffable data source строит разницу между снимками по идентификаторам, и они обязаны быть уникальными в пределах снимка. Дубликаты приводят к исключению о неуникальных идентификаторах, и полагаться на какое-то мягкое поведение нельзя. Частый источник: пагинация, когда сервер возвращает элемент, который уже есть на предыдущей странице. Данные нужно дедуплицировать до формирования снимка.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.