Код Legacy Objective C с шаблоном MVC сосуществует с RxSwift? - PullRequest
0 голосов
/ 14 июня 2019

У нас есть приложение с огромной кодовой базой, написанной на Objective C по шаблону MVC. Теперь мы планируем использовать RxSwift (с шаблоном MVVM) для добавления новых функций / экранов в существующее приложение. Это рекомендуемый подход для этого? Насколько хороша совместимость между этими двумя?

Также мы думаем о поэтапной миграции всей кодовой базы в RxSwift. Я новичок в RxSwift. Я не смог бы получить никакой помощи по этому поводу, если бы кто-то еще достиг этого без каких-либо проблем. Просто хотел узнать, с какими проблемами мы можем столкнуться в этом процессе и какие усилия здесь необходимы.

Можно ли вызвать функции obj c в RxSwift и наоборот?

1 Ответ

1 голос
/ 14 июня 2019

RxSwift и MVVM сами по себе не определяют, как осуществляется переход между экранами.Наиболее распространенным подходом представляется использование FlowControllers .Вот хорошее чтение для ознакомления с концепцией.

Важный вывод: FlowControllers работают для любого экранного подхода, будь то MVC или MVVM / RxSwift. Но , который предполагает, что ваши экраны MVC (то есть сегменты viewControllers и / или раскадровки) не содержат зависимостей от других экранов (посредством сегментирования или проталкивания / извлечения контроллера представления и тому подобного).Если вы хотите смешать MVC и MVVM / RxSwift, скорее всего, вам сначала нужно убрать контроллеры представления из любой логики перехода экрана.

По моему опыту, критически важным аспектом обеспечения взаимозаменяемости строительных блоков является ограничение реактивность только для привязки MVVM к части экрана.Это означает, что FlowControllers не должен реагировать, чтобы использовать любой подход, выбранный для экранов.Делая это позже, гораздо проще заменить RxSwift, который использует какой-то другой подход, например, например, Combine от Apple.

В вашем последнем вопросе нет серьезных ограничений для вызова функции target-c из Swift, RxSwift не имеет значения.Это не тот случай, наоборот, и чистые классы и структуры Swift недоступны непосредственно из target-c.Но при правильном использовании FlowControllers это не должно быть большой проблемой.Потенциальной проблемой может быть совместное использование моделей данных / сетевого API и т. Д., Если вы используете чистый подход Swift с его новыми конструкциями (Codeable и т. Д.).

...