Size: a a a

2022 January 21

К

Кирилл in SwiftBook
Возможно ли здесь обойтись одним data source
источник

К

Кирилл in SwiftBook
Или нужно для каждой секции делать отдельный(очень бы не хотелось это делать)
источник

К

Кирилл in SwiftBook
источник

К

Кирилл in SwiftBook
источник

G

Give Five Give Seven in SwiftBook
А несколько data source для одной коллекции ты и не сможешь применить. Попробуй использовать ViewModel (struct) вместо reference - type (хотя и для referency Type необходимо реализовал протокол Hashable, Equatable, там не сравниваются ссылки). А хэш можно считать по ID элементу и флагу isFavorite (или какой там у тебя при нажатии звездочки). Тогда два элемента с одинаковыми ID, но с разными флагами будут считаться разными. С DiffableDataSource лучше использовать DTO все - таки. Я со временем понял, что это самый оптимальный вариант. Изменяются данные - генерируешь ViewModel (DTO) на основе своих данных. Ничего сложного.
источник

NK

Niko Kim in SwiftBook
Всем привет! Как создать допустимые символы (кириллица) типа CharacterSet?
источник

В

Володя in SwiftBook
Добрый день всем! Вынужден повторить свой вопрос. Раньше для Objective-C был популярен QuickDialog (https://github.com/escoz/QuickDialog). Было бы хорошо найти его аналог на языке Swift. Кто что может подсказать?
источник

ДР

Денис Рубцов... in SwiftBook
Мне кажется такое как на картинке рисовать час с нуля, на swiftiu полагаю еще быстрее, зачем для этого какая-то библиотека?
источник

МН

Михаил Назаров... in SwiftBook
Кто нибудь в курсе как пофиксить такой прикол https://developer.apple.com/forums/thread/28501
источник

К

Кирилл in SwiftBook
Хэширование у меня сделано по свойству phone - оно уникальное.
Флаг же в обоих экземплярах должен быть true. Ну по крайней мере яхочу добиться того, что по тапу на звездочку она становится закрашенной(true) и этот экземпляр(ссылка) передается в верхнюю коллекцию, при снятии выделения со звездочки - убирается из верхней коллекции. А при тапе на ячейку как сверху так и снизу открывается детальный экран. Как с value type добиться этого? Как-то нужно отслеживать сразу два экземпляра и вносить изменение в другой, при изменении значения флага у одного.
источник

G

Give Five Give Seven in SwiftBook
Ты можешь любые ViewModel придумать на основе своих данных, которые удовлетворяют твоим условиям. Для первого массива фильтруешь свои данные по флагу isFavorite - создаешь массив ViewModel с флагом horizontalSection = true, второй массив создаешь с всеми своими данными (horizontalSection = false). Profit. Да, придется каждый раз генерировать, либо писать логику оптимизации.
источник

G

Give Five Give Seven in SwiftBook
У меня есть пример отслеживания struct, но у меня Redux - архитектура.
источник

К

Кирилл in SwiftBook
А если сделать скидку на то, что я использую MVC?))
источник

К

Кирилл in SwiftBook
Я этот маленький проект собрался сделать, чтобы попробовать паттерн Observer
Специально такой экран нарисовал
источник

G

Give Five Give Seven in SwiftBook
Замыкание, Делегат с передачей ID измененного элемента и самих изменений (тут придется самому подумать, как их абстрагировать). Я по -началу передавал полностью ViewModel, исходя из ее ID находил экемпляр данных, который она представляет, и менял его.
источник

К

Кирилл in SwiftBook
Попробую, спасибо за ответ. А как все просто казалось в начале)) А нельзя использовать один и тот же объект в одном data source, но в разных snapshot? Я так сделал, предупреждение пропало, но и ячейки перестали отображаться
Точнее отображается только первая секция
источник

G

Give Five Give Seven in SwiftBook
Вот и я сначала думал, что все просто. Но когда начинаешь копаться, то многие вещи делаются не совсем тривиально)
источник

К

Кирилл in SwiftBook
Я как-то пробовал с этим дата сорсом поработать, но потом плюнул как раз по этой причине, что не получалось один экземпляр несколько раз использовать. При использовании обычного data source не должно такой проблемы быть

Сейчас кажется что diffable удобно использовать в ограниченном количестве случаев.
Когда ячейки на экране формируются одним типом моделей данных и не нужно одну и ту же модель использовать на экране несколько раз
Ну, или, я просто не разобрался 😂
источник

G

Give Five Give Seven in SwiftBook
DiffableDataSource имеет огромное преимущество в упрощении синхронизации UI и твоего Store. А так бы тебе пришлось вручную отслеживать изменения и синхронизировать твою ColllectionView, TableView. Например, без diffable data source я бы не смог использовать Redux нормально. Также без него не было бы SwiftUI с ее анимации и переходами. (Это я про общий diff механизм)
источник

G

Give Five Give Seven in SwiftBook
Разные ячейки данных можно использовать. Надо изучать, возможно придется писать Type Erasure для твоих моделей... Хотя и это под вопросом, так как нужны протоколы Hashable, Equatable ( есть свои тонкости). Либо указывать тип в diffable datasource - AnyHashable. А внутри провайдера для ячеек кастить к типам твоих моделей, настраивая UITableCellView как надо.
источник