Лучшая практика для основной функции данных - PullRequest
4 голосов
/ 15 января 2012

Какой дизайн лучше всего использовать в приложении для iPhone, которое использует базовые данные, когда у вас есть несколько контроллеров представления, которые выполняют похожие вызовы базовых данных?

В настоящее время у меня есть приложение, которое имеет несколько контроллеров представления, все из которых выполняют сходные функции, такие как добавление объектов к объекту, удаление объекта и т. Д. Я полагаю, что есть несколько способов справиться с этим:

  1. Каждый контроллер представления имеет свой собственный класс addItem: blah. Недостатком является то, что между классами

  2. Создайте суперкласс, который имеет основные методы данных, и наследуйте от этого класса. При необходимости переопределить

  3. Создайте категорию, чтобы все экземпляры контроллеров представления имели эти методы без необходимости создавать подклассы

  4. Создать синглтон менеджера данных, который можно вызвать. Это может быть полезно, чтобы я мог ставить запросы в очередь и управлять данными вне каждого контроллера представления. Недостатком является то, что это вообще плохая идея

1 Ответ

4 голосов
/ 16 января 2012

CoreData и ViewControllers не должны знать друг о друге.

UIViewControllers не являются традиционными контроллерами в мире MVC. Они более тесно связаны с представлениями - и я предпочитаю создавать их с учетом этого (в большинстве примеров кода Apple много кода ModelController - возможно, для простоты примеров).

Мне нравится создавать ModelController и оставлять мой ViewController, управляющий моими представлениями, и я даю своим ViewControllers экземпляр моего ModelController.

Мой ModelController будет управлять моей моделью, загрузкой, редактированием, удалением и т. Д. Я все еще открываю свои классы Model для моих ViewControllers, но Views НИКОГДА не покидают ViewController. Вы никогда не увидите View в ModelController.

Преимущество этого состоит в том, что если вы позже создадите приложение для iPad - ваша модель и ее поведение совершенно не зависят от ваших ViewControllers, поэтому, когда вы создаете несколько новых UIViewControllers для вашего приложения для iPad - вы можете подключить ваши ModelControllers.

У вашего ModelController может быть родительский класс с дублирующимися методами CRUD.

С другой стороны ....

Библиотека с именем MagicalRecord https://github.com/magicalpanda/MagicalRecord добавляет шаблон активной записи в NSManagedObjects.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...