Size: a a a

iOS Developers — русскоговорящее сообщество

2019 November 02

IL

Ivan Lupenkov in iOS Developers — русскоговорящее сообщество
Ivan Lupenkov
Подскажите че за беда, отправляю версию а в App Connect не появляется. Ждал минут 30-40...
11.2 xcode
источник

VK

Vladimir Kubantsev in iOS Developers — русскоговорящее сообщество
Boris Bengus
если к примеру взять условный SomeItemDataProvider, который является поставщиком данных о некоторых SomeItem-ах, то через апи клиент он может их получить из апи, замаппить и сохранить в репозиторий, попутно логгировать, так же на основе каких то тогглов менять логику работы и еще и как то слушать работу пуш манагера, чтобы условно обновлять что-то. Пример от балды конечно, но впонле все по полочкам.
А что в принципе должен делать дата провайдер? Разве не возвращать данные по запросу? В примере выше он больше этого делает. Типа, он содержит методы в духе requestSomeData() -> Result<SomeData, Error>
источник

VK

Vladimir Kubantsev in iOS Developers — русскоговорящее сообщество
Если он начинает писать в базу, читать нотификации и содержать логику - это не самый удачный сервис
источник

VK

Vladimir Kubantsev in iOS Developers — русскоговорящее сообщество
или тут сервис для работы с хранилищем?
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Он фасад высокоуровневый для поставки данных о сущности. Он как раз делегирует сохранение реаозиторию, а получение сущностей (ту сигнатуру метода, которую ты упомянул) делегирует апи клиенту.
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Не он лично пишет в базу. Он вообще не знает об этом. У него репозиторий абстрактный в виде протокола к примеру.
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Ну это все примеры взятые из головы. Мы что с тобой хотим обсудить?
источник

t

tox in iOS Developers — русскоговорящее сообщество
всем ку, а в можно как-то без дев аккаунта отдать аппку на тест?
источник

VK

Vladimir Kubantsev in iOS Developers — русскоговорящее сообщество
Прост у меня это всё на разных слоях архитектуры крутится)
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Ну тут тоже на разных.
источник

VK

Vladimir Kubantsev in iOS Developers — русскоговорящее сообщество
Ну и вместе не все пересекаются
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Ну есть просто как бы один агрегатор или фасад как хочешь назови, который как раз скрывает детали нижележащий слоев (апи, хранилище) от слоя UI к примеру.
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Vladimir Kubantsev
Ну и вместе не все пересекаются
А как если у тебя есть 5 мест, где ты стягиваешь с бэка сущности, кешишь их и выводишь в UI? Продублирован этот код? Где ты их маппишь? Где сохраняешь?
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Ох..) повелся я на провокацию
источник

VK

Vladimir Kubantsev in iOS Developers — русскоговорящее сообщество
Сетевой слой разбит на сервисы, который как раз выглядят как `requestSomeStaff() -> Result<Staff, Error>. Вопросы маппинга и валидации ответов на корректность происходит в сетевом слое. Если мы говорим о репозитории, который, например, кэширует данные, то у него есть сервис работающий с БД (crud), и сервис из сетевого слоя. Этот репозиторий отдаётся в интерактор модуля, который уже запрашивает данные исходя из бизнес-логики модуля
источник

VK

Vladimir Kubantsev in iOS Developers — русскоговорящее сообщество
всякая логика работы с данными лежит в интеракторе
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Если 2 модуля одно и тоже делают дублируешь?
источник

VK

Vladimir Kubantsev in iOS Developers — русскоговорящее сообщество
Можно подробней
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Собственно тут все так же. Просто между интерактором и сетью есть тот самый датапровайдер.
источник

BB

Boris Bengus in iOS Developers — русскоговорящее сообщество
Vladimir Kubantsev
Можно подробней
К примеру 2 или больше модулей в своих интеракторах(или 2 экрана как хотите если отвязанно от архитектур говорить) полностью дублируют код, по получению данных из сетевого слоя и сохранению их в репозиторий ... вот для этих целей у меня и есть тот самый датапровайдер.
источник