Правильная архитектура/шаблон model для swift-приложения?
Добрый день.
Делаю приложение на Swift. С сервера загружается массив неких объектов, доступ к которым в дальнейшем я хочу иметь из различных контроллеров, ну или даже если из одного, я не хочу повторно загружать данные. Вопрос в том как правильно написать модель(хоть какой-то шаблон или простой но конкретный пример), какие свойства и протоколы реализовать, как организовать хранение этих данных и доступ к ним на протяжении всего времени жизни приложения? Когда-то я реализовывал класс модели по принципу Singleton, писал sharedInstance, однако мне кажется что есть более правильные и подходящие решения-паттерны.
P.S. С паттернами проектирования я ознакомлен, не уверен что они прямо относятся к моей проблеме, и даже если так, они описывают и оперируют более абстрактными и глобальными сущностями, правилами взаимодействия и т.п. А меня интересует какой-то конкретный пример, например в каком месте контроллера инициализировать объект модели, делать ли его свойством контроллера или свойством какого-то singleton-а или вообще все по-другому?
artem-Kolyadin , дорогой пользователь, настоятельно рекомендуем еще раз обратить самое пристальное внимание на п. 3.1 регламента работы сервиса (и, в особенности, на его последний абзац). В противном случае, ваши вопросы будут удаляться по причине тег-спама, а систематические нарушения приведут к блокировке учетной записи.
Делаешь БД-контроллер - который: хранит все данные, выдает данные по запросу, сохраняет данные по запросу
Делаешь Фабрику - которая создает все контроллеры (и БД тоже)
При создании контроллера, которому нужно общение с БД, Фабрика, после инициализации нужного контроллера, сетапит ему БД-контроллер, и себя - если контроллер тоже должен будет что-то создать.
Скорее всего тебе подойдет хранение данных в БД. Не стоит бояться ее использовать. Конечно ты можешь посмотреть реализацию кэша, когда данные хранятся определенное время.
Если бы было бы больше данных, то можно было бы сказать точнее.
А по модели, то у нее должен быть метод получения данных (асинхронный), который в зависимости от ситуации загружает данные и сохраняет в БД и отдает тебе или просто грузит их из БД.
Кейсов много - реализаций еще больше.