@artem-Kolyadin

Правильная архитектура/шаблон model для swift-приложения?

Добрый день.

Делаю приложение на Swift. С сервера загружается массив неких объектов, доступ к которым в дальнейшем я хочу иметь из различных контроллеров, ну или даже если из одного, я не хочу повторно загружать данные. Вопрос в том как правильно написать модель(хоть какой-то шаблон или простой но конкретный пример), какие свойства и протоколы реализовать, как организовать хранение этих данных и доступ к ним на протяжении всего времени жизни приложения? Когда-то я реализовывал класс модели по принципу Singleton, писал sharedInstance, однако мне кажется что есть более правильные и подходящие решения-паттерны.

P.S. С паттернами проектирования я ознакомлен, не уверен что они прямо относятся к моей проблеме, и даже если так, они описывают и оперируют более абстрактными и глобальными сущностями, правилами взаимодействия и т.п. А меня интересует какой-то конкретный пример, например в каком месте контроллера инициализировать объект модели, делать ли его свойством контроллера или свойством какого-то singleton-а или вообще все по-другому?
  • Вопрос задан
  • 300 просмотров
Решения вопроса 2
briahas
@briahas
ObjC, Swift, Python
Делаешь БД-контроллер - который: хранит все данные, выдает данные по запросу, сохраняет данные по запросу
Делаешь Фабрику - которая создает все контроллеры (и БД тоже)

При создании контроллера, которому нужно общение с БД, Фабрика, после инициализации нужного контроллера, сетапит ему БД-контроллер, и себя - если контроллер тоже должен будет что-то создать.
Ответ написан
Комментировать
maximglobak
@maximglobak
iOS developer
Скорее всего тебе подойдет хранение данных в БД. Не стоит бояться ее использовать. Конечно ты можешь посмотреть реализацию кэша, когда данные хранятся определенное время.
Если бы было бы больше данных, то можно было бы сказать точнее.
А по модели, то у нее должен быть метод получения данных (асинхронный), который в зависимости от ситуации загружает данные и сохраняет в БД и отдает тебе или просто грузит их из БД.
Кейсов много - реализаций еще больше.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы