KamiSempai
@KamiSempai
Android and iOS developer

Как правильно реализовать вложенные фреймворки в iOS?

Здравствуйте, стоит задача создать "пачку" вложенных фреймворков со следующей структурой:

UI Implementation
    ↳Busines
        ↳Server API

Где:
Server API: Набор классов для работы с сервером +классы с базовой бизнеслогикой (Objective-C)
Busines: Набор классов реализующие некую бизнес логику с привязкой к ViewContriller. В основном базовая реализация списков и экранов аутентификации без привязки к конкретному UI. Активно использует Server API. (Swift)
UI Implementation: Это уже конкретная реализация с конкретным UI. (Swift)

Конечный пользователь выбирает из всего этого зоопарка нужный уровень абстракции и использует для этого соответствующий фреймворк.

Собственно, встал вопрос как все это дело организовать.
Перерыл кучу ресурсов и нигде не затрагивается вопрос и вложенности фреймворков. Есть похожий вопрос на stackoverflow.com:
stackoverflow.com/questions/14194577/ios-framework...
Но ответ в стиле "Не делайте так" меня не устраивает. Как правильно то?

PS: Пока писал вопрос пришла в голову идея положить весь код в один проект и для компиляции каждого уровня создать отдельные .xcodeproj файлы которые будут использовать только те классы которые к ним относятся. По сути в папке проекта будет целых 3 файла .xcodeproj под каждый фреймворк.
На сколько правильна такая реализация?
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
KamiSempai
@KamiSempai Автор вопроса
Android and iOS developer
Вопрос решен. Сделал почти так как описывал в вопросе но еще лучше. Дело в том, что для каждого "Таргета" (Target) можно указать какие классы будут включены в него.

Поэтому решение у меня получилось следующее:
Создан 1 файл проекта. В этом проекте создано 3 отдельных таргета. Первый таргет содержит классы только для работы с API, второй все класы предыдущего таргета плюс свои классы, и так далее.
По сути каждый таргет - это независимая и самодостаточная библиотека. Разница лишь в количестве классов внутри.

Указать какие файлы включаются в Target можно в его свойствах во вкладке Build Phases.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
f0r3s1
@f0r3s1
iOS Developer
Во время чтения вопроса я сразу подумал разбить проект на подпроекты. Я думаю что это очень хороший вариант
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы