моделей в DiffableDataSource? Меня свич кейсы не возбуждают
Приходит на ум Wrapper над моделями
Тут у тебя одна огромная ошибка, diffable data source - это маппер, а не хранилище. Его задача лишь предоставить идентификатор, который уже ты свяжешь с реальными данными, это не место, где нужно хранить сами данные. То есть писать так: enum Item { case one(OneModel) case two(TwoModel) ... } бред сивой кобылы, потому что ты просто копируешь свои данные в diffable data source, вместо того что бы по идентификатору достать реальные. Подход с хранением возможен только для каких-то маленьких примеров, для реальной работы нужно избегать этого, по причинам указанным выше.
В качестве идентификаторов использовать UUID, енамы без ассоциированных значений или что-то сложнее, по типу OptionSet. Всё перечисленное крайне легковесны, потому что это просто, повторюсь, идентификаторы, а не инденификаторы хранящие ещё и данные. Отсюда и создание снапшотов крайне быстрая операция, как и любые операции над ними. А теперь представь ситуацию, когда создавая новый снапшотов тебе ещё и данными его забивать, или копировать. Почувствовал боль? )
Я-то почувствовал, а айфоны современные вряд ли почувствуют. Но ты и не дал ответ на мой вопрос
А такой проблемы и не будет
Ты перебираешь через switch пытаясь достать модель из идентификатора, которая разная у каждого кейса индентификатора. А я говорю, что идентификатор должен быть однородным и не содержать данные, тогда его и перебирать не нужно будет. А каким образом ты по однородному(скажем что-то посложнее, OptionSet) идентификатору будешь доставать реальные данные, это уже от твоей реализации стора/фасада к данным, зависит. Здесь уже и можно сделать всё красиво, статично и с множеством подходов, в том числе никогда не увидеть перебора через switch.
Спасибо большое. Пойду переваривать
Обсуждают сегодня